Placez-le simplement dans votre .vim/pluginrépertoire, puis utilisez la :BufOnlycommande pour fermer tous les tampons sauf celui actif. Vous pouvez également le cartographier ailleurs dans votre fichier .vimrc.
NERDTree est fermé si le focus est dans le panneau d'arbre nerd
gayavat
2
Vous voudrez peut-être fermer NERDTree avant de le faire pour empêcher la bdcommande de fermer le vim lui-même; nnoremap <silent> <leader>c :NERDTreeClose<bar>bufdo bd<CR>.
lvarayut
11
La documentation avertit que l'argument :bufdo«ne doit pas supprimer les tampons ni ajouter de tampons à la liste des tampons». Donc, si cette solution fonctionne, elle fonctionne par accident… et souvent elle ne fonctionne pas pour moi (passe à un tampon différent).
glts
10
Cela ferme tous les tampons pour moi, ce qui n'est pas ce que les questions demandent. (MacVim version 8.0.1207)
Ceci est une bonne réponse. Cela fait que BufOnly se sent un peu exagéré (je veux dire, un plugin entier?) À moins que vous n'utilisiez la fonction de passage d'arguments de BufOnly. Tout ce que je veux vraiment faire c'est:%bd|e#
shmup
41
@jorgeh %bd= supprimer tous les tampons. e#= ouvrir le dernier tampon pour l'édition. Le tuyau entre les deux exécute simplement une commande après l'autre.
OldTimeGuitarGuy
20
@Jared Vous pouvez utiliser %bd|e#|bd#pour supprimer le [No Name]tampon qui est créé.
kshenoy
12
Merveilleux. Alors là, vous avez la seule chose pour laquelle j'ai jamais utilisé le plugin BufOnly, distillé à une seule commande:command! BufOnly silent! execute "%bd|e#|bd#"
J'ai rencontré des problèmes lors de l'utilisation de cette commande lorsque NERDTree est activé. Je recommande d'utiliser le plugin BufOnly.vim comme mentionné par @VoY.
moeabdol
1
J'ai fait le mappage suivant qui tient compte de la suppression du tampon NERDTree:nnoremap <leader>bd :%bd | NERDTree<cr>
Uri
5
Je l'utilise depuis longtemps, mais maintenant je l'obtiens E16: Invalid rangeparce que certains des tampons de la plage n'existent pas réellement. Il ignorait cela jusqu'à récemment.
Jon
3
@Jon Vérifiez :lspour voir le plus grand tampon que vous avez réellement ouvert, et définissez votre plage sur cela (c'est-à-dire si votre tampon le plus élevé est 22, alors :1,22bd). J'ai eu la même erreur jusqu'à ce que je fasse cela.
Nairou
51
je fais ça
:w | %bd | e#
Mon préféré si je veux juste que mon tampon actuel ouvre et ferme tous les autres.
Fonctionnement: commencez par écrire les modifications du tampon en cours, puis fermez tous les tampons ouverts, puis rouvrez le tampon sur lequel j'étais actuellement. Dans Vim, |enchaîne l'exécution des commandes ensemble. Si votre tampon est à jour, ce qui précède peut être réduit à:%bd | e#
Cela fonctionne généralement bien. mais parfois %ne peut pas fonctionner comme tous les sélecteurs. Pourriez-vous deviner quelque chose?
Jinyoung Kim
@JinyoungKim (from [1]) Dans la commande ":% bd", la plage '%' sera remplacée par les numéros de ligne de début et de fin dans le tampon actuel. Au lieu d'utiliser '%' comme plage, vous devez spécifier des nombres pour la plage. Par exemple, pour supprimer tous les tampons, vous pouvez utiliser la commande ": 1,9999bd" [1] vimdoc.sourceforge.net/cgi-bin/vimfaq2html3.pl#8.8
iamnotsam
Je viens de vérifier le document. Alors, la plage '%' repose sur un certain nombre de lignes de fichiers actuelles?
Jinyoung Kim
2
J'ai trouvé une fonction intégrée bufnr("$")qui renvoie le dernier numéro de tampon. mais je n'ai aucune idée d'interpoler à la chaîne lorsque j'utilise comme ça :1,bufnr("$")bd. Peut-être .. la meilleure solution serait :1,9999bd.
Jinyoung Kim
2
:help :bdmontre :%bdelete " delete all buffers. C'est %exactement ce que vous voulez. J'utilise une variante de votre solution: :%bd<CR><C-O>:bd#<CR>cela supprimera tous les tampons, puis utilisera <C-O>pour récupérer la position dans le fichier actuel, puis :bd#pour supprimer le tampon non nommé. Cela ferme tous les tampons et vous laisse au même emplacement dans le fichier.
Alejandro
25
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 avec des modifications non enregistrées. De cette façon, vous pouvez conserver le fichier actuel (modifié) dans la liste des tampons.
Modifier: veuillez noter que cela supprimera également votre NERDTreeBuffer. Vous pouvez le récupérer avec: NERDTree
J'ai remarqué que lors de la reprise des sessions vim, qui restaure les tampons, je ne pouvais plus supprimer les tampons en utilisant ce qui précède. Au lieu de cela, j'ai dû utiliser:%bd|e#|bd#
shmup
Meilleure solution. J'ai ajouté une commande pour rouvrir NERDTreenmap <Leader>\c :call CloseAllBuffersButCurrent()<CR>:NERDTree<CR>
Voici ce que je fais. Donc, j'aime garder la position de mon curseur après avoir supprimé tous les tampons et la plupart des solutions ci-dessus ignorent simplement ce fait. Je pense également que le remappage de la commande est préférable à la frappe, alors ici, j'utilise <leader>bdpour supprimer tous les tampons et revenir à la position d'origine du curseur.
noremap <leader>bd :%bd\|e#\|bd#<cr>\|'"
%bd = supprimer tous les tampons.
e# = ouvrir le dernier tampon pour l'édition (quel est le tampon sur lequel je travaille).
bd#pour supprimer le tampon [No Name] qui est créé lorsque vous utilisez %bd.
Le tuyau entre les deux ne fait qu'une commande après l'autre. Vous devez y échapper en utilisant\|
Il n'y a vraiment aucune raison pour que vous ayez le bdqmappage qui ferme tous les tampons et quitte vim avec :q!, alors que vous pouvez simplement l'utiliser :qa!. Sauf si je
Réponses:
Vous pouvez utiliser ce script depuis vim.org:
http://www.vim.org/scripts/script.php?script_id=1071
Placez-le simplement dans votre
.vim/plugin
répertoire, puis utilisez la:BufOnly
commande pour fermer tous les tampons sauf celui actif. Vous pouvez également le cartographier ailleurs dans votre fichier.vimrc
.Source sur Github (via le miroir vim-scripts): https://github.com/vim-scripts/BufOnly.vim/blob/master/plugin/BufOnly.vim
la source
Essaye ça
bufdo exécute la commande pour tous les tampons
http://vim.wikia.com/wiki/Run_a_command_in_multiple_buffers
la source
bd
commande de fermer le vim lui-même;nnoremap <silent> <leader>c :NERDTreeClose<bar>bufdo bd<CR>
.:bufdo
«ne doit pas supprimer les tampons ni ajouter de tampons à la liste des tampons». Donc, si cette solution fonctionne, elle fonctionne par accident… et souvent elle ne fonctionne pas pour moi (passe à un tampon différent).J'ai pu le faire assez facilement comme ceci:
la source
:%bd|e#
%bd
= supprimer tous les tampons.e#
= ouvrir le dernier tampon pour l'édition. Le tuyau entre les deux exécute simplement une commande après l'autre.%bd|e#|bd#
pour supprimer le[No Name]
tampon qui est créé.command! BufOnly silent! execute "%bd|e#|bd#"
|
:map <leader>o :%bd\|e#<cr>
Si vous ne vous souciez pas de l'actuel, il est plus simple de faire quelque chose comme (pas besoin de script):
la source
nnoremap <leader>bd :%bd | NERDTree<cr>
E16: Invalid range
parce que certains des tampons de la plage n'existent pas réellement. Il ignorait cela jusqu'à récemment.:ls
pour voir le plus grand tampon que vous avez réellement ouvert, et définissez votre plage sur cela (c'est-à-dire si votre tampon le plus élevé est 22, alors:1,22bd
). J'ai eu la même erreur jusqu'à ce que je fasse cela.je fais ça
Mon préféré si je veux juste que mon tampon actuel ouvre et ferme tous les autres.
Fonctionnement: commencez par écrire les modifications du tampon en cours, puis fermez tous les tampons ouverts, puis rouvrez le tampon sur lequel j'étais actuellement. Dans Vim,
|
enchaîne l'exécution des commandes ensemble. Si votre tampon est à jour, ce qui précède peut être réduit à:%bd | e#
la source
%
ne peut pas fonctionner comme tous les sélecteurs. Pourriez-vous deviner quelque chose?bufnr("$")
qui renvoie le dernier numéro de tampon. mais je n'ai aucune idée d'interpoler à la chaîne lorsque j'utilise comme ça:1,bufnr("$")bd
. Peut-être .. la meilleure solution serait:1,9999bd
.:help :bd
montre:%bdelete " delete all buffers
. C'est%
exactement ce que vous voulez. J'utilise une variante de votre solution::%bd<CR><C-O>:bd#<CR>
cela supprimera tous les tampons, puis utilisera<C-O>
pour récupérer la position dans le fichier actuel, puis:bd#
pour supprimer le tampon non nommé. Cela ferme tous les tampons et vous laisse au même emplacement dans le fichier.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 avec des modifications non enregistrées. De cette façon, vous pouvez conserver le fichier actuel (modifié) dans la liste des tampons.Modifier: veuillez noter que cela supprimera également votre NERDTreeBuffer. Vous pouvez le récupérer avec: NERDTree
la source
set nohidden
d'être réglé?En utilisant
et
la source
Fermeture de tous les tampons ouverts:
Fermeture de tous les tampons ouverts à l' exception du tampon actuel :
Ajoutez cette fonction à
.vimrc
et appelez-la avec:call CloseAllBuffersButCurrent()
.Carte pratique:
la source
:%bd|e#|bd#
nmap <Leader>\c :call CloseAllBuffersButCurrent()<CR>:NERDTree<CR>
Je mets cela dans mon fichier .vimrc
puis votre
leader + ca
(tout fermer) ferme tous les tampons sauf le courant.Ce qu'il fait c'est
: w - sauvegarde le tampon actuel
% bd - ferme tous les tampons
e # - ouvre le dernier fichier modifié
bd # - ferme le tampon sans nom
la source
Il y a un plugin qui fait exactement cela et un peu plus!
Découvrez close-buffers.vim
la source
Voici ce que je fais. Donc, j'aime garder la position de mon curseur après avoir supprimé tous les tampons et la plupart des solutions ci-dessus ignorent simplement ce fait. Je pense également que le remappage de la commande est préférable à la frappe, alors ici, j'utilise
<leader>bd
pour supprimer tous les tampons et revenir à la position d'origine du curseur.%bd
= supprimer tous les tampons.e#
= ouvrir le dernier tampon pour l'édition (quel est le tampon sur lequel je travaille).bd#
pour supprimer le tampon [No Name] qui est créé lorsque vous utilisez%bd
.Le tuyau entre les deux ne fait qu'une commande après l'autre. Vous devez y échapper en utilisant
\|
'"
= garder la position de mon curseur.la source
J'aime
1,100bd
( suggéré par juananruiz ) qui semble fonctionner pour moi.J'ai ajouté un
quit!
à ma cartographie pour me donnerCela tue tous les tampons et arrête Vim, ce que je cherchais principalement.
la source
bdq
mappage qui ferme tous les tampons et quitte vim avec:q!
, alors que vous pouvez simplement l'utiliser:qa!
. Sauf si jeQue diriez-vous simplement:
(merci à https://thoughtbot.com/blog/vim-splits-move-faster-and-more-naturally )
la source