Comment puis-je fermer tous les tampons dans Vim sauf celui que je suis en train de modifier?
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
Essaye ça
bufdo bd
commande bufdo pour tous les tampons
J'ai pu faire ça assez facilement comme ça:
:%bd|e#
Si vous ne vous souciez pas de l’actuel, il est plus simple de faire quelque chose comme (pas besoin de script):
1,100bd
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#
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
En utilisant
:on[ly][!]
et
:h only
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>
Il y a un plugin qui fait exactement cela et un peu plus!
Découvrez close-buffers.vim
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.
Que diriez-vous juste:
ctrl-w o
(merci à https://robots.thoughtbot.com/vim-splits-move-faster-and-more-naturally )
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é