Pufferliste neu nummerieren

29

Nachdem ich eine Weile an einem Projekt gearbeitet habe, sehe ich große Lücken zwischen aufeinander folgenden Puffernummern. Dies liegt daran, dass die Puffer dazwischen aus verschiedenen Gründen gelöscht wurden. Leider kann es schwierig sein, nach der Eingabe zu einem bestimmten Puffer zu springen oder einen Bereich von Puffern auszuwählen :ls. Gibt es eine Möglichkeit, alle offenen Puffer beginnend mit einem neu zu nummerieren, ohne alle Dateien erneut zu öffnen?

Leerzeiger
quelle

Antworten:

21

Nein (nicht ohne Puffer zu löschen).

Vim unterstützt die manuelle Zuweisung von Puffernummern oder die Neuordnung von Puffern nach dem Öffnen nicht. Es ist die Philosophie, dass jeder Puffer eine Kennung erhält, die für die Lebensdauer des Puffers festgelegt ist (in der Hilfe :lswird darauf hingewiesen, dass "jeder Puffer eine eindeutige Nummer hat. Diese Nummer ändert sich nicht ...").

Sie können jedoch die Argumentliste verwenden. Fügen Sie alle offenen Puffer in die Argumentliste ein, löschen Sie alle ausstehenden Puffer und öffnen Sie dann alles in der Argumentliste. Die folgenden Befehle werden das ausführen:

  • :argdel * (bestehende Argumentliste löschen)
  • :bufdo argadd % (Fügen Sie für jeden Puffer den Pfad des Puffers zur Liste hinzu.)
  • :1,1000bd (Löschen Sie die Puffer 1 bis 1000; wahrscheinlich gibt es eine bessere Möglichkeit, dies zu tun.)
  • :argdo e (Bearbeiten Sie dieses Argument für jedes Argument.)

Dadurch bleibt ein zusätzlicher leerer Puffer übrig, den vim öffnet, wenn Sie alle vorherigen Puffer löschen. Dies ist jedoch eine angemessene Annäherung an die von Ihnen gewünschte Funktionalität. Sie können nur :bddiesen zusätzlichen Puffer.


quelle
1
Ihre Antwort sagt nein, aber es scheint so, als ob das großartig funktioniert!
Aharris88
(Ich meinte "nein" in dem Sinne, dass Sie es nicht tun können, ohne die Dateien erneut zu öffnen). Wird es für Sie tatsächlich von 1 umnummeriert? Ich dachte, es hat funktioniert, als ich es zum ersten Mal versuchte, aber jetzt sehe ich, dass es für mich nicht neu nummeriert wird?
Ja, es ist für mich umnummeriert.
Aharris88
Ja, ich bin nur dumm, ich habe meinen Fehler gefunden.
"Jeder Puffer erhält eine Kennung, die für die Lebensdauer dieses Puffers festgelegt ist."
14

"die puffernummern werden verrückt" Erzähl mir davon! Am Ende des Tages bin ich einfach über 100 Puffer. Glücklicherweise haben Sie, wie Sie in dieser Animation sehen können, die tabVervollständigung für Puffernamen.

Hit: b se <Tab>

Auch wenn Sie die Puffer nicht neu nummerieren können, können Sie dennoch problemlos herumspringen.

Ich weiß nicht, ob es aus der Animation hervorgeht, aber die "Tab-Vervollständigung" unterscheidet sich von der Kommandozeilen-Tab-Vervollständigung. Es ist eher wie ein "Tabulatoren-Ersetzer, der Mehrdeutigkeiten auflöst". In der Befehlszeile Was bedeutet , dass ich geben hätte sctabdann setabhier aber vim hat eine ‚se‘ Suche und ersetzt es mit der ersten (und einzigen) übereinstimmen. Wenn ich getippt testtabhätte, hätte es 'generate_test_data.py' und dann taberneut 'scripts / setup_test_data.sh' und wäre dann taberneut herumgefahren usw.

Der Punkt ist, dass Sie es sich zur Gewohnheit machen können, nur :b <minimum amount of unambiguous characters>tabzu dem gewünschten Dokument zu springen. Ich denke, das ist sogar besser, als mich daran zu erinnern, dass "Meine Puffer 1: foo 2: bar 3: etc" sind, wie ich es als Neuling getan habe.

Bruno Bronosky
quelle
7

Sie können Vim-Airline verwenden. Dieses Plugin hat ein Verhalten, das möglicherweise Ihr Problem behebt:

Siehe Zeile 470-479 in airline.txt

Hierdurch werden die Puffernummern nicht geändert. Sie können jedoch einen Puffer von links nach rechts anhand der Zeilennummer in der Registerkarte auswählen. Dies ist meine Einstellung für die Fluggesellschaft in .vimrc:

"set airline 
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline#extensions#tabline#formatter = 'default'
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#fnametruncate = 16
let g:airline#extensions#tabline#fnamecollapse = 2

let mapleader=","

let g:airline#extensions#tabline#buffer_idx_mode = 1

nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9

Meine Tab-Zeile: Meine Tab-Zeile

HJIahu
quelle
tolle! Ich liebe es :)
Blasco
Nicht die Antwort auf die Frage, aber es behebt das Problem mit den verrückten Puffernummern. Nur eine Empfehlung, nur buffer_numbers anzuzeigen: switch_buffers_and_tabs=1undbuffer_idx_mode=0
caligari
6

Laut Dokumentation ändern sich die Puffernummern nie

    Each buffer has a unique number.  That number will not change,
    so you can always go to a specific buffer with ":buffer N" or
    "N CTRL-^", where N is the buffer number.

Die einzige Möglichkeit, die Puffer neu zu nummerieren, besteht darin, vim neu zu starten.

aharris88
quelle
0

Alte Frage, aber da dies in der Google-Suche ganz oben steht, lasse ich dies hier für zukünftige Suchanfragen. Wie Bruno angedeutet hat, ist ein Fuzzy-Finder, der Pufferlisten unterstützt, der richtige Weg. Ich persönlich benutze und empfehle fzf-vim . Es liefert den Befehl :FZFBuffers, der ungefähr so ​​aussieht:

Bildbeschreibung hier eingeben

Die Puffernummern werden links angezeigt, falls Sie sie benötigen. Mit einem Fuzzy-Finder müssen Sie sie jedoch möglicherweise nie wieder verwenden. Erinnern Sie sich einfach an einen Teil des Dateinamens. In der Regel sind 2-5 Tastenanschläge entfernt. Persönlich habe ich diesen Befehl einem Tastendruck zugeordnet, und das Wechseln zwischen den Puffern ist für mich fast augenblicklich!

verboze
quelle