it-swarm.com.de

Vim: Schließen Sie alle Puffer außer diesem

Wie kann ich alle Puffer in Vim schließen, außer dem, den ich gerade bearbeite?

151
Rafid

Sie können dieses Skript von vim.org verwenden:

http://www.vim.org/scripts/script.php?script_id=1071

Legen Sie es einfach in Ihr .vim/plugin-Verzeichnis und schließen Sie dann mit dem :BufOnly-Befehl alle Puffer außer dem aktiven Puffer. Sie können es auch an anderer Stelle in Ihrem .vimrc zuordnen.

Quelle auf Github (über vim-scripts mirror): https://github.com/vim-scripts/BufOnly.vim/blob/master/plugin/BufOnly.vim

56
VoY

Versuche dies

bufdo bd

bufdo führt den Befehl für alle Puffer aus

http://vim.wikia.com/wiki/Run_a_command_in_multiple_buffers

135
gayavat

Ich konnte das ganz leicht so machen:

:%bd|e#
69

Wenn Sie sich nicht um den aktuellen kümmern, ist es einfacher etwas zu tun (kein Skript nötig):

1,100bd
54
juananruiz

Ich mach das

:w | %bd | e#

Mein Favorit, wenn ich nur meinen aktuellen Puffer öffnen und alle anderen schließen möchte. 

Wie es funktioniert: Schreiben Sie zuerst die Änderungen des aktuellen Puffers, schließen Sie dann alle offenen Puffer und öffnen Sie dann den aktuellen Puffer erneut. In Vim kettet der | die Ausführung von Befehlen zusammen. Wenn Ihr Puffer auf dem neuesten Stand ist, kann das Obige zu :%bd | e# verkürzt werden.

43
iamnotsam

Aufbauend auf juananruiz 'Antwort.

Nehmen Sie dann eine kleine Änderung in dem Puffer vor, den Sie behalten möchten

:1,1000bd

Der Befehl bd (Puffer löschen) löscht keine Puffer mit nicht gespeicherten Änderungen. Auf diese Weise können Sie die aktuelle (geänderte) Datei in der Pufferliste behalten.

Bearbeiten: Bitte beachten Sie, dass dadurch auch Ihr NERDTreeBuffer gelöscht wird. Sie können es mit: NERDTree zurückbekommen

25
cutemachine

Durch die Nutzung

:on[ly][!]

und

:h only
12
klokop

Alle offenen Puffer schließen:

silent! execute "1,".bufnr("$")."bd"

Schließen Sie alle offenen Puffer außer dem aktuellen :

function! CloseAllBuffersButCurrent()
  let curr = bufnr("%")
  let last = bufnr("$")

  if curr > 1    | silent! execute "1,".(curr-1)."bd"     | endif
  if curr < last | silent! execute (curr+1).",".last."bd" | endif
endfunction

Fügen Sie diese Funktion zu .vimrc hinzu und rufen Sie sie mit :call CloseAllBuffersButCurrent() auf.

Convenience-Karte:

nmap <Leader>\c :call CloseAllBuffersButCurrent()<CR>
7
mynyml

Es gibt ein plugin, das genau das und ein bisschen mehr macht!

Check out close-puffer.vim

2
Niko Bellic

Ich mag 1,100bd ( vorgeschlagen von juananruiz ), der für mich zu funktionieren scheint.

Ich habe meinem Mapping einen quit! hinzugefügt

nnoremap <leader>bd :1,100bd<CR>
nnoremap <leader>bdq :1,100bd<CR>:q!<CR>

Dadurch werden alle Puffer zerstört und Vim wird heruntergefahren, was ich hauptsächlich gesucht habe.

0
LazyRiverYogi
0
Matt Walsh

Ich habe dies in meine .vimrc-Datei eingefügt

nnoremap <leader>ca :w <bar> %bd <bar> e# <bar> bd# <CR>

dann dein leader + ca (schließe alle) schließe alle Puffer mit Ausnahme des aktuellen.

Was es tut, ist

: w - aktuellen Puffer speichern

% bd - schließt alle Puffer

e # - zuletzt bearbeitete Datei öffnen

bd # - schließt den unbenannten Puffer

0
Yulin