Ich öffne mehrere Dateien in Vim, indem ich zum Beispiel laufe
vim a/*.php
Das öffnet 23 Dateien.
Ich bearbeite dann und führe das Folgende zweimal aus
:q
Das schließt alle meine Puffer.
Wie können Sie nur einen Puffer in Vim schließen?
Ich öffne mehrere Dateien in Vim, indem ich zum Beispiel laufe
vim a/*.php
Das öffnet 23 Dateien.
Ich bearbeite dann und führe das Folgende zweimal aus
:q
Das schließt alle meine Puffer.
Wie können Sie nur einen Puffer in Vim schließen?
Antworten:
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.
: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 zu
w
ist write
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
im bw
Befehl bedeutet Auslöschen, er spricht nicht über den w
Befehl. Er hat diese Warnung dort platziert, damit die Leute nicht dachten, dass der bw
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.
: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 dem ls
Puffer entfernt werden.
Ü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
:1,3bw
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.
[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
gt
und gT
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 Registerkarte
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:
"" 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.
:bdelete
oder erhalten bleibt :bwipeout
. Siehe meine Antwort .
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 .vimrc
für einen einfacheren Zugriff wie
:nnoremap <Leader>q :Bdelete<CR>
Aus der Dokumentation des Plugins :
- Schließen und entfernen Sie den Puffer.
- Zeigen Sie eine andere Datei in diesem Fenster an.
- Zeigen Sie eine leere Datei an, wenn keine anderen Dateien geöffnet sind.
- Lassen Sie keine nutzlosen Puffer [keine Datei], wenn Sie eine andere Datei in diesem Fenster bearbeiten möchten.
- Funktionieren Sie auch dann, wenn eine Datei in mehreren Fenstern geöffnet ist.
- Arbeiten Sie mit verschiedenen Puffer-Explorern und Registerkarten.
Aus der Dokumentation des Plugins :
Vim hat zwei Befehle zum Schließen eines Puffers:
:bdelete
und:bwipeout
. Ersteres entfernt die Datei aus der Pufferliste und löscht ihre Optionen, Variablen und Zuordnungen. Es bleibt jedoch in der Jumplist,Ctrl-o
bringt Sie also zurück und öffnet die Datei erneut. Wenn Sie das nicht möchten, verwenden Sie:bwipeout
oder Bbyes Äquivalent,:Bwipeout
wo 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.