In Vim können nicht viele Puffer mit einem Befehl geschlossen werden

70

Ich benutze Vim in Screen. Ich führe den Befehl aus

vim <bigFolder>

Ich stecke fest, da es nicht sinnvoll ist, jeden Puffer zu schließen

:q

Wie können Sie alle aktiven Puffer in Vim mit einem Befehl in Vim schließen?

Léo Léopold Hertz 준영
quelle
Ich kann nicht einmal den Befehl Strg-D verwenden, um den Bildschirm zu schließen, da ich gerade einen Ordner durchsuche. Es hilft nicht, Vim zu schließen, da ich in Screen bin, bleibt alles von der letzten Sitzung.
Léo Léopold Hertz 준영
2
Ich denke, Sie haben Puffer mit Fenstern verwechselt. : q oder: quit schließt das aktuelle Fenster. Verwenden Sie: bd oder: bdelete, um einen Puffer zu entladen und aus der Pufferliste zu löschen. Sunakus Antwort ist die einzige bis zu diesem Punkt, die es richtig gemacht hat :)
Bryan

Antworten:

78

:qalloder :qaschließt alle Fenster

Ry4an Brase
quelle
2
Vielen Dank! Du hast meinen Tag gerettet. Mein Terminal wäre ohne Ihren Befehl nutzlos.
Léo Léopold Hertz 준영
2
: qa ist das, was das OP wollte, aber natürlich beendet es auch vim. Für gvim ist dies oft unerwünscht, wenn Sie einfach alles vollständig schließen möchten, aber Ihr GUI-Fenster nicht verlieren möchten. Verwenden Sie daher eine der folgenden Techniken, um alle Puffer zu schließen, ohne sie zu beenden.
Yetanotherjosh
82

Mit dem :bufdoBefehl können Sie einen Befehl für alle Puffer ausführen. In diesem Fall möchten Sie :bufdo bdeletealle offenen Puffer auf einmal schließen.

Sunaku
quelle
3
Da bdelete einen Bereich akzeptiert, können Sie auch Folgendes tun: 1.9999bd, wobei 9999 nur eine Zahl ist, die hoch genug ist, um eine offene Puffernummer plausibel einzuschließen.
Yetanotherjosh
65

:% bd (elete)

Ich denke, das ist es, wonach du fragst

Ron
quelle
Wie würden Sie dies auf nur einen Puffer anwenden? :bdkönnte sein?
Alexej Magura
16
:on

schließt alle Puffer außer dem, den Sie gerade bearbeiten (der Cursor befindet sich in diesem Puffer).

:on!

schließt auch modifizierte Puffer, aber diese werden zu versteckten Puffern.

:ls

listet alle Puffer mit ihrem Status auf (versteckt, ...)

Etwas Hilfe:

:h only
:h hidden-buffer
:h ls
Oli
quelle
Vielen Dank für Ihre Antwort! - - Ich kann den Unterschied zwischen der Option [!] Und ohne sie nicht erkennen. Alle meine Puffer werden nur durch beide Befehle ausgeblendet, auch meine gespeicherten. Wie können Sie den Unterschied sehen?
Léo Léopold Hertz 준영
1
Ich habe das von der vim-Hilfe genommen und du hast recht, ich sehe keinen Unterschied zwischen den beiden.
Oli
18
:auf! schließt tatsächlich andere Fenster, keine Puffer.
Kbaribeau
3
Das ist einfach falsch. Puffer sind ganz andere Tiere als Fenster.
Rbellamy
1
Ja, Puffer bleiben offen. Versuchen Sie das:% bd aus der Antwort unten, das hat bei mir funktioniert!
Malte
12

:on schließt KEINE Puffer.

Es werden nur die anderen Fenster geschlossen.

bca
quelle
6

Dies ist nicht genau das, wonach Sie gefragt haben, aber das Folgende kann zu einem gewünschten Ergebnis führen. Es:

  • macht die aktuelle Registerkarte zur einzigen geöffneten Registerkarte ( :tabo)
  • macht das Fenster in der Registerkarte zum einzigen geöffneten Fenster ( :only)
  • zeigt den ersten Puffer im geöffneten Fenster an ( 1 b)
  • löscht Puffer mit den Nummern 2 bis 2000 ( 2,2000bd)

    :tabo | :only | 1 b | 2,2000 bd

Sollten mehr als 2000 Puffer geöffnet sein, passen Sie diese entsprechend an.

Wenn Sie einfach alle Puffer löschen möchten, 1,2000bdsollten Sie die Aufgabe erledigen. Beachten Sie jedoch, dass für alle geöffneten Registerkarten und Fenster neue, leere Puffer erstellt werden.

Paul Carey
quelle
Nett! Ich wusste nicht einmal, dass Sie Befehle im vim-Befehlsmodus zusammenpfeifen können. +1 dafür.
Jason Down
1
In diesem Fall ist es nicht wirklich eine "Pfeife". Mit dem Operator "bar" können Sie in Vim nur mehrere Befehle in einer einzigen Zeile ausführen. doc
Justin Force
5

Das spart aber nicht die Puffer. Vielleicht: wqall! : xall! ist ein bisschen besser.

David Weitz
quelle
1

Wenn Sie VIM vollständig stecken lassen, sollten Sie es dennoch von außerhalb von VIM töten können.

  • Wenn Sie VIM mit STRG + Z anhalten können, können Sie es mit beenden kill %vim
  • Wenn Sie VIM nicht aussetzen können, sollten Sie in der Lage sein, die PID mithilfe von zu finden ps. Das kannst du töten:
$ ps -f -C vim
UID        PID  PPID  C STIME TTY          TIME CMD
nfellman 27273  7473  0 Jun24 pts/15   00:00:00 /nfs/iil/home/nfellman/vim/bin/vim a.pl
nfellman 37213  23747 0 Jun23 pts/15   00:00:00 /nfs/iil/home/nfellman/vim/bin/vim b.pl

Wenn ich also das VIM beenden möchte, das gerade bearbeitet wird a.pl, können Sie Folgendes tun:

kill -9 27273

Dies sollte auch innerhalb des Bildschirms funktionieren

Nathan Fellman
quelle
-3

:q!

arbeitet immer für mich

Sean McSomething
quelle