web-dev-qa-db-fra.com

Vim: Fermer tous les tampons sauf celui-ci

Comment puis-je fermer tous les tampons dans Vim sauf celui que je suis en train de modifier?

151
Rafid

Vous pouvez utiliser ce script de vim.org:

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

Il suffit de le placer dans votre répertoire .vim/plugin, puis d’utiliser la commande :BufOnly pour fermer tous les tampons, sauf celui qui est actif. Vous pouvez également le mapper ailleurs dans votre .vimrc.

Source sur Github (via vim-scripts mirror): https://github.com/vim-scripts/BufOnly.vim/blob/master/plugin/BufOnly.vim

56
VoY

Essaye ça

bufdo bd

commande bufdo pour tous les tampons

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

135
gayavat

J'ai pu faire ça assez facilement comme ça:

:%bd|e#
69
OldTimeGuitarGuy

Si vous ne vous souciez pas de l’actuel, il est plus simple de faire quelque chose comme (pas besoin de script):

1,100bd
54
juananruiz

Je fais ça

:w | %bd | e#

Mon préféré si je veux juste que mon tampon actuel ouvre et ferme tous les autres. 

Comment cela fonctionne: écrivez d'abord les modifications du tampon actuel, puis fermez tous les tampons ouverts, puis rouvrez le tampon sur lequel j'étais. Dans Vim, le | enchaîne l'exécution de commandes. Si votre mémoire tampon est à jour, le ci-dessus peut être réduit à :%bd | e#

43
iamnotsam

S'appuyant sur la réponse de juananruiz.

Faites un petit changement dans le tampon que vous souhaitez conserver, puis

:1,1000bd

La commande bd (suppression du tampon) ne supprimera aucun tampon contenant des modifications non enregistrées. De cette façon, vous pouvez conserver le fichier actuel (modifié) dans la liste des tampons.

Edit: Veuillez noter que cela supprimera également votre NERDTreeBuffer. Vous pouvez le récupérer avec: NERDTree

25
cutemachine

En utilisant

:on[ly][!]

et

:h only
12
klokop

Fermer tous les tampons ouverts:

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

Fermeture de tous les tampons ouverts sauf celui en cours :

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

Ajoutez cette fonction à .vimrc et appelez-la avec :call CloseAllBuffersButCurrent().

Carte de commodité:

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

Il y a un plugin qui fait exactement cela et un peu plus!

Découvrez close-buffers.vim

2
Niko Bellic

J'aime 1,100bd ( suggéré par juananruiz ) qui semble fonctionner pour moi.

J'ai ajouté un quit! à mon mapping pour me donner

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

Cela tue tous les tampons et arrête Vim, ce que je recherchais principalement.

0
LazyRiverYogi
0
Matt Walsh

Je mets cela dans mon fichier .vimrc

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

alors votre leader + ca (tout fermer) ferme tous les tampons sauf le tampon actuel.

Qu'est-ce qu'il fait est

: w - enregistrer le tampon actuel

% bd - ferme tous les tampons

e # - ouvre le dernier fichier édité

bd # - ferme le tampon non nommé

0
Yulin