Beachten Sie, dass Sie die Dateien in separaten Vim-Fenstern mit vim -o a/*.php(oder -Omit vertikalen Fenstern) öffnen und die Puffernavigation vermeiden können. Dies ist eine großartige Methode für nur wenige Dateien, aber mit 23 Dateien haben sie nur wenige Zeilen / Spalten jeder.
Cascabel
1
@ Jefromi: Danke, dass du darauf hingewiesen hast! Ich habe die Option -o noch nie benutzt.
Léo Léopold Hertz 준영
Zum Thema Fenstersplits. Wenn Sie bereits in Vim sind und eine andere Datei in einem Split öffnen möchten: esp für horizontal: evsp für vertikal.
Lanzafame
Antworten:
557
Ein Wort der Vorsicht: "Das w in bw steht nicht für Schreiben, sondern für Auslöschen!"
Mehr aus Handbüchern:
: bd
Entladen Sie den Puffer [N] (Standard: aktueller Puffer) und löschen Sie ihn aus der Pufferliste. Wenn der Puffer geändert wurde, schlägt dies fehl, es sei denn, [!] Ist angegeben. In diesem Fall gehen Änderungen verloren. Die Datei bleibt unberührt.
Wenn Sie wissen, was Sie tun, können Sie auch Folgendes verwenden: bw
: bw
Wie |: bdelete |, aber den Puffer wirklich löschen.
Auch die Möglichkeit, ': M, Nbd' zu tun, um die Puffernummern M bis N zu schließen. Oder ': bd N1 N2 ...' wobei N # eine
Puffernummer
61
Das Handbuch sagt, nur zu verwenden, :bwwenn "Sie wissen, was Sie tun", was ich nicht tue, also werde ich es wahrscheinlich verwenden :bd.
Jberryman
1
Das hat mich zuerst verwirrt - ich habe eine neue Registerkarte geöffnet, um Puffer zu schließen ... aber das Schließen des Puffers in der Registerkarte (mit einer Geraden :bd) schließt auch die Registerkarte. Was Sie wahrscheinlich wollen, ist :bd n .. [m]oder :n,mbddass bestimmte Zahlen oder Zahlenbereiche geschlossen werden, was Sie tun können, ohne auf die Puffer zu
schauen
5
wist writelaut Vim-Handbuch die Abkürzung für Befehl, außerdem wird kein "Auslöschen" erwähnt. Die Beschreibung des Befehls ( help write) beginnt mit "Schreiben Sie den gesamten Puffer in die aktuelle Datei."
amn
3
@amn Ich war auch verwirrt, aber er meinte, das wim bwBefehl bedeutet Auslöschen, er spricht nicht über den wBefehl. Er hat diese Warnung dort platziert, damit die Leute nicht dachten, dass der bwBefehl Pufferschreiben bedeutet (was nicht bedeutet, dass der Puffer gelöscht wird)
John,
350
Wenn dies durch die vorherigen Antworten nicht deutlich wird:
: bd schließt den aktuellen Puffer. Wenn Sie die Pufferliste nicht abrufen möchten.
Bevor ich fand: bd machte es für mich nie Sinn, dass die Leute keine Probleme hatten, a: ls -> nach Dokumentennummer zu suchen -> Puffer nach Nummer zu entladen. Finden die Leute das tatsächlich effektiv?
Svend
3
@svend für eine Reihe von Puffern sicher, aber für einen einsamen ist a: bd wahrscheinlich effektiver.
:bdschließt nur den Puffer, während (was auch immer das bedeutet), während :bwauch alle Variablen gelöscht werden und WIRKLICH aus dem lsPuffer entfernt werden.
RedX
1
hhhs Antwort unten ist ausführlicher…
103
Überprüfen Sie Ihre Puffer-ID mit: Puffern
Sie sehen dort eine Liste von Puffern wie
1 a.php
2 b.php
3 c.php
wenn Sie b.php aus dem Puffer entfernen möchten
:2bw
Wenn Sie alle aus den Puffern entfernen / schließen möchten
Anstatt die Ausgabe des Befehls: ls zu durchsuchen und einen Puffer durch Angabe seiner Nummer zu löschen (entladen, löschen ..), finde ich, dass die Verwendung von Dateinamen oft effektiver ist.
Zum Beispiel, nachdem ich ein paar TXT-Dateien geöffnet habe, um meine Erinnerungen an einen feinen Punkt aufzufrischen. Kopieren Sie einige Textzeilen und fügen Sie sie ein, um sie als eine Art Vorlage zu verwenden. Usw. Ich würde Folgendes eingeben:
:bd txt <Tab>
Beachten Sie, dass die übereinstimmende Zeichenfolge nicht am Anfang des Dateinamens stehen muss.
Oben wird die Liste der Dateinamen angezeigt, die mit 'txt' am unteren Bildschirmrand übereinstimmen, und der Befehl: bd, den ich ursprünglich eingegeben habe, bleibt unberührt und kann abgeschlossen werden.
Hier ist ein Beispiel:
doc1.txt doc2.txt
:bd txt
Ich könnte über das 'txt'-Bit eine Rücktaste drücken und den Dateinamen eingeben, den ich löschen möchte. Wenn dies jedoch sehr praktisch ist, muss ich nicht: Wenn ich ein zweites Mal die Tabulatortaste drücke, führt Vim meinen Befehl automatisch aus mit dem ersten Spiel:
:bd doc1.txt
Wenn ich diesen bestimmten Puffer loswerden möchte, muss ich nur die Eingabetaste drücken.
Und wenn der Puffer, den ich löschen möchte, zufällig die zweite (dritte usw.) Übereinstimmung ist, muss ich nur die Tabulatortaste drücken, damit mein Befehl: bd die Liste der Übereinstimmungen durchläuft.
Natürlich kann diese Methode auch verwendet werden, um über Befehle wie: b ..: sb .. usw. zu einem bestimmten Puffer zu wechseln.
Dieser Ansatz ist besonders nützlich, wenn die Option "verstecktes" Vim aktiviert ist, da die Pufferliste schnell sehr groß werden kann, mehrere Bildschirme abdeckt und es schwierig macht, den bestimmten Puffer zu finden, den ich suche.
Um diese Funktion optimal zu nutzen, lesen Sie wahrscheinlich die folgende Vim-Hilfedatei und passen Sie das Verhalten der Tab-Befehlszeilenvervollständigung entsprechend an, damit es am besten zu Ihrem Workflow passt:
:help wildmode
Das oben beschriebene Verhalten ergibt sich aus der folgenden Einstellung, die ich aus Gründen der Konsistenz ausgewählt habe, um die Bash-Vervollständigung zu emulieren:
:set wildmode=list:longest,full
Im Gegensatz zur Verwendung von Puffernummern besteht der Vorteil dieses Ansatzes darin, dass ich mich normalerweise an mindestens einen Teil eines bestimmten Dateinamens erinnere, sodass ich direkt auf den Puffer zielen kann, anstatt zuerst seine Nummer mit dem Befehl: ls nachschlagen zu müssen.
Auf diese Weise können Sie eine einzelne Datei links bearbeiten und durch das gesamte Verzeichnis rechts navigieren ... Nur ein Gedanke, nicht die Lösung ...
[EDIT: Dies war ein dummer Vorschlag aus einer Zeit, als ich Vim nicht gut genug kannte. Bitte verwenden Sie keine Tabs anstelle von Puffern. Registerkarten sind Vims "Fensterlayouts"]
Vielleicht auf Tabs umsteigen?
vim -p a/*.php öffnet die gleichen Dateien in Registerkarten
gtund gTwechseln Sie die Laschen hin und her
:q Schließt nur die aktuelle Registerkarte
:qa schließt alles und geht
:tabo schließt alles außer der aktuellen Registerkarte
Das war ein großartiger Beitrag - er hat mich dazu inspiriert, noch tiefer zu graben - hast du dir das angeschaut wildmenu? Es ist ähnlich wie lustyjuggler (obwohl einfacher), aber es ist eingebaut (was gut für mich war, weil lustyjuggler es braucht +ruby, und das Standard-Vim für Ubuntu Oneiric-Schiffe -ruby).
Nate
@Nate: Ja, ich verwende ein Wildmenü, um Dateien zu öffnen, aber wenn Sie viele Dateien im Projekt haben, wird es einfach nicht skaliert. Außerdem unterstützt das vim-noxPaket von Ubuntu Ruby.
Leonid Shevtsov
1
Wenn Sie ein Puffer- oder Baumnavigations-Plugin wie Buffergator oder NERDTree verwenden, müssen Sie diese Teilungen umschalten, bevor Sie den aktuellen Puffer zerstören. Andernfalls senden Sie Ihre Teilungen an Wonkyville
Ich benutze:
"" Buffer Navigation
" Toggle left sidebar: NERDTree and BufferGator
fu! UiToggle()
let b = bufnr("%")
execute "NERDTreeToggle | BuffergatorToggle"
execute ( bufwinnr(b) . "wincmd w" )
execute ":set number!"
endf
map <silent> <Leader>w <esc>:call UiToggle()<cr>
Wobei " NERDTreeToggle" in dieser Liste mit der Eingabe identisch ist :NERDTreeToggle. Sie können diese Funktion ändern, um sie in Ihre eigene Konfiguration zu integrieren.
Dafür ist das Bbye- Plugin perfekt, wodurch Ihr Fensterlayout bei der Verwendung von :bdeleteoder erhalten bleibt :bwipeout. Siehe meine Antwort .
Wolfson
0
Puffer schließen, ohne das Fenster zu schließen
Wenn Sie einen Puffer schließen möchten, ohne Ihr Fensterlayout zu zerstören (aktuelles Layout basierend auf Teilungen), können Sie ein Plugin wie bbye verwenden . Basierend darauf können Sie einfach verwenden
:Bdelete (instead of :bdelete)
:Bwipeout (instead of :bwipeout)
Oder erstellen Sie einfach ein Mapping in Ihrem .vimrcfür einen einfacheren Zugriff wie
Vim hat zwei Befehle zum Schließen eines Puffers: :bdeleteund :bwipeout. Ersteres entfernt die Datei aus der Pufferliste und löscht ihre Optionen, Variablen und Zuordnungen. Es bleibt jedoch in der Jumplist, Ctrl-obringt Sie also zurück und öffnet die Datei erneut. Wenn Sie das nicht möchten, verwenden Sie :bwipeoutoder Bbyes Äquivalent, :Bwipeoutwo Sie es verwendet hätten :bdelete.
vim -o a/*.php
(oder-O
mit vertikalen Fenstern) öffnen und die Puffernavigation vermeiden können. Dies ist eine großartige Methode für nur wenige Dateien, aber mit 23 Dateien haben sie nur wenige Zeilen / Spalten jeder.Antworten:
Ein Wort der Vorsicht: "Das w in bw steht nicht für Schreiben, sondern für Auslöschen!"
Mehr aus Handbüchern:
: bd
Wenn Sie wissen, was Sie tun, können Sie auch Folgendes verwenden: bw
: bw
quelle
:bw
wenn "Sie wissen, was Sie tun", was ich nicht tue, also werde ich es wahrscheinlich verwenden:bd
.:bd
) schließt auch die Registerkarte. Was Sie wahrscheinlich wollen, ist:bd n .. [m]
oder:n,mbd
dass bestimmte Zahlen oder Zahlenbereiche geschlossen werden, was Sie tun können, ohne auf die Puffer zuw
istwrite
laut Vim-Handbuch die Abkürzung für Befehl, außerdem wird kein "Auslöschen" erwähnt. Die Beschreibung des Befehls (help write
) beginnt mit "Schreiben Sie den gesamten Puffer in die aktuelle Datei."w
imbw
Befehl bedeutet Auslöschen, er spricht nicht über denw
Befehl. Er hat diese Warnung dort platziert, damit die Leute nicht dachten, dass derbw
Befehl Pufferschreiben bedeutet (was nicht bedeutet, dass der Puffer gelöscht wird)Wenn dies durch die vorherigen Antworten nicht deutlich wird:
: bd schließt den aktuellen Puffer. Wenn Sie die Pufferliste nicht abrufen möchten.
quelle
:bd
schließt nur den Puffer, während (was auch immer das bedeutet), während:bw
auch alle Variablen gelöscht werden und WIRKLICH aus demls
Puffer entfernt werden.Überprüfen Sie Ihre Puffer-ID mit: Puffern
Sie sehen dort eine Liste von Puffern wie
wenn Sie b.php aus dem Puffer entfernen möchten
Wenn Sie alle aus den Puffern entfernen / schließen möchten
quelle
Anstatt die Ausgabe des Befehls: ls zu durchsuchen und einen Puffer durch Angabe seiner Nummer zu löschen (entladen, löschen ..), finde ich, dass die Verwendung von Dateinamen oft effektiver ist.
Zum Beispiel, nachdem ich ein paar TXT-Dateien geöffnet habe, um meine Erinnerungen an einen feinen Punkt aufzufrischen. Kopieren Sie einige Textzeilen und fügen Sie sie ein, um sie als eine Art Vorlage zu verwenden. Usw. Ich würde Folgendes eingeben:
Beachten Sie, dass die übereinstimmende Zeichenfolge nicht am Anfang des Dateinamens stehen muss.
Oben wird die Liste der Dateinamen angezeigt, die mit 'txt' am unteren Bildschirmrand übereinstimmen, und der Befehl: bd, den ich ursprünglich eingegeben habe, bleibt unberührt und kann abgeschlossen werden.
Hier ist ein Beispiel:
Ich könnte über das 'txt'-Bit eine Rücktaste drücken und den Dateinamen eingeben, den ich löschen möchte. Wenn dies jedoch sehr praktisch ist, muss ich nicht: Wenn ich ein zweites Mal die Tabulatortaste drücke, führt Vim meinen Befehl automatisch aus mit dem ersten Spiel:
Wenn ich diesen bestimmten Puffer loswerden möchte, muss ich nur die Eingabetaste drücken.
Und wenn der Puffer, den ich löschen möchte, zufällig die zweite (dritte usw.) Übereinstimmung ist, muss ich nur die Tabulatortaste drücken, damit mein Befehl: bd die Liste der Übereinstimmungen durchläuft.
Natürlich kann diese Methode auch verwendet werden, um über Befehle wie: b ..: sb .. usw. zu einem bestimmten Puffer zu wechseln.
Dieser Ansatz ist besonders nützlich, wenn die Option "verstecktes" Vim aktiviert ist, da die Pufferliste schnell sehr groß werden kann, mehrere Bildschirme abdeckt und es schwierig macht, den bestimmten Puffer zu finden, den ich suche.
Um diese Funktion optimal zu nutzen, lesen Sie wahrscheinlich die folgende Vim-Hilfedatei und passen Sie das Verhalten der Tab-Befehlszeilenvervollständigung entsprechend an, damit es am besten zu Ihrem Workflow passt:
Das oben beschriebene Verhalten ergibt sich aus der folgenden Einstellung, die ich aus Gründen der Konsistenz ausgewählt habe, um die Bash-Vervollständigung zu emulieren:
Im Gegensatz zur Verwendung von Puffernummern besteht der Vorteil dieses Ansatzes darin, dass ich mich normalerweise an mindestens einen Teil eines bestimmten Dateinamens erinnere, sodass ich direkt auf den Puffer zielen kann, anstatt zuerst seine Nummer mit dem Befehl: ls nachschlagen zu müssen.
quelle
Verwenden:
:ls
- Puffer auflisten:bd#n
- um den Puffer zu schließen, wobei #n die Puffernummer ist (verwenden Siels
, um ihn abzurufen )Beispiele:
Puffer 2 löschen:
quelle
Sie können auch die nächsten und vorherigen Funktionstasten zuordnen, wodurch das Durchlaufen von Puffern zum Kinderspiel wird
von meinem vimrc
quelle
Wie wäre es mit
Auf diese Weise können Sie eine einzelne Datei links bearbeiten und durch das gesamte Verzeichnis rechts navigieren ... Nur ein Gedanke, nicht die Lösung ...
quelle
[EDIT: Dies war ein dummer Vorschlag aus einer Zeit, als ich Vim nicht gut genug kannte. Bitte verwenden Sie keine Tabs anstelle von Puffern. Registerkarten sind Vims "Fensterlayouts"]
Vielleicht auf Tabs umsteigen?
vim -p a/*.php
öffnet die gleichen Dateien in Registerkartengt
undgT
wechseln Sie die Laschen hin und her:q
Schließt nur die aktuelle Registerkarte:qa
schließt alles und geht:tabo
schließt alles außer der aktuellen Registerkartequelle
wildmenu
? Es ist ähnlich wie lustyjuggler (obwohl einfacher), aber es ist eingebaut (was gut für mich war, weil lustyjuggler es braucht+ruby
, und das Standard-Vim für Ubuntu Oneiric-Schiffe-ruby
).vim-nox
Paket von Ubuntu Ruby.Wenn Sie ein Puffer- oder Baumnavigations-Plugin wie Buffergator oder NERDTree verwenden, müssen Sie diese Teilungen umschalten, bevor Sie den aktuellen Puffer zerstören. Andernfalls senden Sie Ihre Teilungen an Wonkyville
Ich benutze:
Wobei "
NERDTreeToggle
" in dieser Liste mit der Eingabe identisch ist:NERDTreeToggle
. Sie können diese Funktion ändern, um sie in Ihre eigene Konfiguration zu integrieren.quelle
:bdelete
oder erhalten bleibt:bwipeout
. Siehe meine Antwort .Puffer schließen, ohne das Fenster zu schließen
Wenn Sie einen Puffer schließen möchten, ohne Ihr Fensterlayout zu zerstören (aktuelles Layout basierend auf Teilungen), können Sie ein Plugin wie bbye verwenden . Basierend darauf können Sie einfach verwenden
Oder erstellen Sie einfach ein Mapping in Ihrem
.vimrc
für einen einfacheren Zugriff wieVorteil gegenüber vim's: bdelete und: bwipeout
Aus der Dokumentation des Plugins :
: bdelete vs: bwipeout
Aus der Dokumentation des Plugins :
quelle