it-swarm.com.de

Wie schließe ich einen einzelnen Puffer (von vielen) in Vim?

Ich öffne mehrere Dateien in Vim, indem ich sie beispielsweise ausführe

vim a/*.php

das öffnet 23 Dateien.

Ich führe dann meine Bearbeitung durch und führe die folgenden Schritte zweimal aus

:q

das schließt alle meine Puffer.

Wie kann man in Vim nur einen Puffer schließen?

Ein Wort der Vorsicht: "w steht nicht für Schreiben, sondern für Auslöschen!"

Mehr von 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, sofern nicht [!] Angegeben wurde. In diesem Fall gehen die Änderungen verloren. Die Datei bleibt davon unberührt.

Wenn Sie wissen, was Sie tun, können Sie auch Folgendes verwenden: bw

: bw

Wie |: bdelete |, aber den Puffer wirklich löschen.

515
hhh

Wenn dies durch die vorherigen Antworten nicht deutlich wird:

: bd schließt den aktuellen Puffer. Wenn Sie die Pufferliste nicht greifen möchten.

344
RedBlueThing

Ü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 du b.php aus dem Buffer entfernen willst

:2bw

wenn Sie alle aus den Puffern entfernen/schließen möchten

:1,3bw
98
nightingale2k1

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 häufig effektiver ist.

Nachdem ich zum Beispiel ein paar TXT-Dateien geöffnet habe, um meine Erinnerungen an einen bestimmten Punkt aufzufrischen, kopiere und füge ein paar Textzeilen ein, um sie als eine Art Vorlage zu verwenden. 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 Rand des Bildschirms übereinstimmen, und der Befehl: bd, den ich ursprünglich eingegeben habe, bleibt unverändert und kann nun ausgeführt werden.

Hier ist ein Beispiel:

doc1.txt doc2.txt
:bd txt 

Ich könnte das 'txt'-Bit mit der Rücktaste überschreiben und den Dateinamen eingeben, den ich löschen möchte. Dies ist jedoch sehr praktisch, da ich dies nicht tun muss: Wenn ich ein zweites Mal die Tabulatortaste drücke, vervollständigt Vim meinen Befehl automatisch mit dem ersten Spiel:

:bd doc1.txt

Wenn ich diesen speziellen Puffer loswerden möchte, muss ich nur die Eingabetaste drücken.

Und wenn der Puffer, den ich löschen möchte, die zweite (dritte .. usw.) Übereinstimmung ist, muss ich nur die Tabulatortaste gedrückt halten, damit mein: bd-Befehl 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 'Hidden' Vim aktiviert ist, da die Pufferliste schnell sehr umfangreich werden kann, mehrere Bildschirme abdeckt und es schwierig macht, den gewünschten Puffer zu finden.

Um diese Funktion optimal nutzen zu können, lesen Sie am besten die folgende Vim-Hilfedatei und passen Sie das Verhalten der Tab-Befehlszeilenvervollständigung entsprechend an, damit es Ihrem Workflow am besten entspricht:

: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 ist der Vorteil dieses Ansatzes, dass ich mich normalerweise an mindestens einen Teil eines bestimmten Dateinamens erinnere, sodass ich den Puffer direkt ansteuern kann, anstatt erst seine Nummer mit dem Befehl: ls nachschlagen zu müssen.

41
guv'

Verwenden:

  • :ls - um Puffer aufzulisten
  • :bd#n - um den Puffer zu schließen, wobei #n die Puffernummer ist (verwenden Sie ls, um ihn abzurufen)

Beispiele:

  • puffer 2 löschen:

    :bd2
    
36
Shaun

Sie können auch die Funktionstasten mit den nächsten und vorherigen Tasten belegen, sodass das Durchsuchen von Puffern zum Kinderspiel wird

map <F2> :bprevious<CR>
map <F3> :bnext<CR>

von meinem vimrc

14
Ravi

[EDIT: Dies war ein dummer Vorschlag aus einer Zeit, in der ich Vim nicht gut genug kannte. Bitte verwenden Sie keine Tabulatoren anstelle von Puffern. Registerkarten sind Vims "Fensterlayouts"]

Vielleicht mit Tabs wechseln?

vim -p a/*.php öffnet die gleichen Dateien in Registerkarten

gt und gT wechseln die Registerkarten vor und zurück

:q schließt nur die aktuelle Registerkarte

:qa schließt alles und beendet sich

:tabo schließt alles außer der aktuellen Registerkarte

1
Leonid Shevtsov

Wenn Sie ein Buffer- oder Tree-Navigations-Plugin wie Buffergator oder NERDTree verwenden, müssen Sie diese Splits umschalten, bevor Sie den aktuellen Buffer zerstören. Andernfalls senden Sie Ihre Splits 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 von :NERDTreeToggle Identisch ist. Sie können diese Funktion ändern, um sie in Ihre eigene Konfiguration zu integrieren.

1
New Alexandria

Wie wäre es mit

vim -O a a

Auf diese Weise können Sie eine einzelne Datei auf der linken Seite bearbeiten und durch das gesamte Verzeichnis auf der rechten Seite navigieren ... Nur ein Gedanke, nicht die Lösung ...

1
Santi