Les vues multicouches de Vim (Windows, Buffers et Tabs) m'ont laissé un peu confus. Disons que je divise l'affichage (: sp), puis que je sélectionne un tampon différent à afficher dans chaque fenêtre. Maintenant, je veux fermer l'un des tampons, mais je ne veux pas que la fenêtre se ferme (après la fermeture, elle peut afficher le tampon suivant de la liste ou un tampon vide, cela n'a pas d'importance). Comment puis-je faire ceci?
Merci.
DeleteCurBufferNotCloseWindow()
fonctionne bien et est assez lisible . (Avertissement: ma réponse)Réponses:
Il y a un script sur le wiki Vim pour faire cela. Je ne pense pas qu'il existe un système intégré qui fasse ce que vous voulez.
La dernière version de vim-bufkill est sur github .
la source
J'ai un peu dérangé ça et j'ai finalement trouvé:
Voici la version copier / coller pour le mappage des touches:
Je l'ai testé un peu et cela fonctionne de manière cohérente dans diverses conditions. Lorsqu'il est utilisé sur le dernier tampon, il vous laissera un nouveau tampon vide.
Jetez ceci dans votre .vimrc:
Redémarrez Vim ou simplement
:source ~/.vimrc
pour que les modifications prennent effet. La prochaine fois que vous souhaitez fermer un tampon, tapez simplement:\q
(si\
est votre clé principale)la source
map <leader>q :bp<bar>sp<bar>bn<bar>bd<CR>
. Redémarrez VIM, la prochaine fois que vous souhaitez fermer un tampon, tapez simplement:\q
sp
).sp
avecvsp
. mon entrée .vimrc ressemble à ceci:cnoremap bd bp<bar>vsp<bar>bn<bar>bd
J'ai cherché ça aujourd'hui et j'ai trouvé
:b#|bd#
qui change la fenêtre actuelle en tampon précédemment ouvert et supprime / masque le tampon que vous venez de quitter.
Cela nécessite au moins deux tampons connus.
Si une autre fenêtre mais la fenêtre actuelle affiche le même tampon, cela détruira toujours le fractionnement. Vous pouvez changer toutes les fenêtres dans le tampon précédemment ouvert avec
:windo b#
J'ai ajouté plus de détails sur l'ancienne commande en discutant d'un mappage pour elle (et de certains pièges) dans une réponse à une question similaire .
la source
:#b|#bd
Il suffit d'échanger la commande de tampon et le numéro de tampon ci-dessus.:bn|bd#
ou:bp|bd#
passer au tampon ouvert précédent ou suivant, respectivement, plutôt qu'au tampon auquel vous avez accédé le plus récemment (b #).Fonctionne comme il se doit jusqu'à ce qu'un tampon soit ouvert dans plusieurs fenêtres. Assez bien à moins que vous ne souhaitiez utiliser les plus gros scripts disponibles.
Edit: c'est ce que j'utilise en ce moment:
la source
nmap <leader>d :ene<CR>:bd #<CR>
Je pense que c'est ce que tu cherches
http://www.vim.org/htmldoc/windows.html#window-moving
Essaye ça:
Regardez votre identifiant de tampon en utilisant
vous y verrez une liste de tampons comme
si vous souhaitez supprimer b.py du tampon
si vous voulez tout supprimer / fermer des tampons
la source
Pour ceux qui utilisent NERDTree.
Je corrige cela en utilisant ce plugin https://github.com/jistr/vim-nerdtree-tabs et maintenant je peux fermer le seul buff / file / tab sans fermer la fenêtre.
Après avoir installé le plugin ci-dessus, mettez le code suivant sur mon .vimrc:
La description de la variable ci-dessus est: Fermer l'onglet actuel s'il n'y a qu'une seule fenêtre et que c'est NERDTree (par défaut 1)
Plus d'informations ici: https://github.com/jistr/vim-nerdtree-tabs#configuration
la source
Je ne pense pas qu'il existe un moyen unique de le faire, mais vous pouvez le faire
:enew
ou:ls
répertorier vos tampons et les échanger vers un autre en utilisant:b [number]
.Une fois que vous avez un tampon différent dans la fenêtre
:bd #
, vous supprimerez le tampon précédent dans la fenêtre, et comme le tampon actuel existe toujours, la fenêtre ne sera pas fermée.la source
J'avais l'habitude d'utiliser :
Mais j'ai trouvé certaines occasions où il fermait ma fenêtre.
Récemment, j'ai remarqué que je l'utilise toujours lorsque je travaille sur un projet et que je dois ouvrir rapidement mon
.tmux.conf
.zshrc
avant de retourner au travail.Pour cet usage, je trouve préférable de:
C-6
:bd#
supprimer le tampon précédent (je cartographié comme ceci:nnoremap <leader>d :bd#<CR>
)Cela me permet de contrôler le tampon vers lequel je retourne et me semble plus naturel.
la source
Aurait
Faites ce que vous voulez? il éditera un nouveau tampon sans nom dans la fenêtre actuelle en laissant le fichier existant ouvert dans toutes les autres fenêtres.
la source
Ma solution préférée pour cela est le plugin bufkill.vim ( GitHub ). Il fournit des versions alternatives des différentes
:b
commandes -prefix qui fonctionnent de la même manière que leurs homologues, mais laissent la fenêtre ouverte. Ils affichent quel que soit le dernier tampon visible contenu, ou un tampon vide / nouveau s'il n'y avait pas de tampon antérieur.De la documentation:
la source
Pour «fermer» une vue, utilisez
:hid[e]
. Fonctionne si vous avez réussi à diviser la fenêtre ou à ouvrir plusieurs fichiers. Vous ne pouvez pas masquer le dernier tampon affiché.1 Astuce supplémentaire qui m'a aidé: utilisez
:e ./path/to/file.work
pour ouvrir un fichier dans la fenêtre sans diviser la fenêtre.PS A deux jours de vim, j'ai encore du mal à trouver les commandes d'aide précises. J'espère que cela aidera quelqu'un d'autre à continuer à travailler jusqu'à ce qu'il ait vraiment le temps de comprendre vim.
la source
Voici une fonction vimscript très lisible, qui gère bien tous les cas ,
:bd
(si une seule fenêtre, il suffit de l'invoquer!),:enew
.buffer-list
, basculez vers celui-ci, sinon passez ensuite, via:bn
.la source
Si vous êtes comme moi et que vous êtes venu ici en essayant de faire le contraire , fermez la fenêtre sans fermer le tampon, vous pouvez le faire via:
:close
la source
Une version simple que j'utilise personnellement est
Il va au tampon précédent et supprime l'autre tampon (qui est en fait l'original d'où nous avons sauté). Cela fait ce que vous attendez dans 99% des cas sans scripts compliqués.
En tant que raccourci clavier, j'utilise ce qui suit
la source
utilisez ": bd" comme commande.
la source