Angenommen, ich habe mehrere Dateien in Vim als Puffer geöffnet. Die Dateien haben *.cpp
, *.h
und einige sind *.xml
. Ich möchte alle XML-Dateien mit schließen :bd *.xml
. Vim erlaubt dies jedoch nicht (E93: Mehr als eine Übereinstimmung ...).
Gibt es eine Möglichkeit, dies zu tun?
PS Ich weiß, dass das :bd file1 file2 file3
funktioniert. So kann ich beurteilen irgendwie *.xml
zu file1.xml file2.xml file3.xml
?
<tab>
können Sie nur durch die Übereinstimmungen blättern , indem Sie einen einzelnen Eintrag in die Befehlszeile einfügen und<C-a>
alle Übereinstimmungen gleichzeitig hinzufügen.vim-rsi
installiert haben (ich denke, es ist ein Muss für alle auf * nix), um die<C-a>
Arbeit auf die ursprüngliche Weise in der Befehlszeile zu erhalten, sollten Sie<C-x>
<C-a>
stattdessen verwenden.Löscht den Pufferbereich von 3 bis 5.
quelle
Sie können auch alternativ verwenden:
quelle
Sie können dies verwenden.
Es sollte ziemlich einfach sein, es einem Befehl hinzuzufügen.
quelle
glob()
Sie erhalten nur vorhandene Dateien (auf Ihrer Festplatte) und keine geöffneten Puffer.fnameescape()
Namen zu puffern.c:/Program files/foo.bar
und sogarfoo.bar.foo
und es hat perfekt funktioniert.fnameescape()
Möglicherweise war es erforderlich, wenn ich die Puffernamen verwendet habe. Aber ich überprüfe nur, ob die\.{ext}$
Puffernamen mit einem bestimmten Ausdruck übereinstimmen: - Ich gebe: bd` Puffernummern. Ich habe keinen Grund, irgendetwas für Regex-Matching zu entkommen.Probieren Sie das folgende Skript aus. Das Beispiel ist für "txt", ändern Sie es nach Bedarf, z. B. in "xml". Geänderte Puffer werden nicht gelöscht. Drücken Sie \ bd, um die Puffer zu löschen.
[Bearbeiten] Gleich ohne: bufdo (wie von Luc Hermitte angefordert, siehe Kommentar unten)
quelle
:bufdo
da es das aktuelle Fenster durcheinander bringt.Auch ich brauchte diese Funktionalität die ganze Zeit. Dies ist die Lösung, die ich in meinem vimrc habe.
Jetzt kann ich es einfach tun
:BW regex
(z. B.:BW \.cpp$
alle passenden Puffer löschen, deren Pfadname mit diesem Muster übereinstimmt.Wenn Sie lieber löschen möchten als wischen, können Sie natürlich ersetzen
exec 'bw ' . join(l:matchList, ' ')
mitexec 'bd ' . join(l:matchList, ' ')
quelle
:badd
,:bdelete
,:bufdo
,:bn
...)Ganz einfach: Verwenden Sie den
:bd[elete]
Befehl. Zum Beispiel:bd[elete] buf#1 buf#5 buf#3
wird die Puffer 1, 3 und 5 löschen.quelle
Sie können einfach verwenden:
dann einfach benutzen
<c-a>
, um die Vervollständigung aller geöffneten Dateien des angegebenen Dateityps zu erleichtern.Sie haben beispielsweise 1.xml, 2.xml, 3.xml und 4.xml und können Folgendes tun:
dann drücken
<c-a>
vim wird für Sie wie folgt automatisch vervollständigt:
Sie können einfach die Eingabetaste drücken, um den Befehl abzuschließen.
Wenn Sie Änderungen an einer der oben genannten Dateien vorgenommen haben, denken Sie daran:
quelle