Vim: Supprimer le tampon sans perdre la fenêtre fractionnée


149

Lorsqu'un tampon est supprimé (la commande "bd [elete]"), il supprime non seulement le tampon, mais supprime également la fenêtre fractionnée dans laquelle se trouvait le tampon.

Existe-t-il un moyen de supprimer / décharger un tampon et de garder la fenêtre divisée?



Cela a bien fonctionné pour moi.
Rumple Stiltskin

[Celui-ci DeleteCurBufferNotCloseWindow()fonctionne bien et est assez lisible] ( stackoverflow.com/a/44950143/3625404 ).
qeatzy

2
Possible duplication du tampon de fermeture
ezdazuzena

Réponses:



327

bp|bd # le fera.


Détails: bp("buffer previous") nous déplace vers un autre buffer dans la fenêtre courante ( bncela fonctionnerait aussi), puis bd #("buffer delete" "alternative file") supprime le buffer dont nous venons de nous éloigner. Voir: help bp, help bd, help alternate-file.


71
Vous n'avez aucune idée depuis combien de temps je cherche quelque chose comme celui-ci qui est si simple, ne nécessitant pas un script entier pour l'exécuter. Dans mon VIMRC, j'ai maintenant ce mappé pour CTRL + C:nnoremap <C-c> :bp\|bd #<CR>
Cloud

11
J'essaye de remapper en utilisant nmap <silent> <leader>d :bp|bd #<CR>, mais je reçois E94: No matching buffer for #<CR>.
Fábio Perez

22
Mettre une barre oblique inverse devant le |(par exemple :bp\|bd)
Mud

4
Je savais que je ne devrais pas avoir à installer un plugin pour cela. Merci!
Akash Agrawal

2
b#|bd #passera au dernier tampon utilisé au lieu du suivant / précédent. Cependant, il passera aux tampons cachés si vous en avez set hidden, j'ai donc créé une fonction BD plus intelligente pour éviter cela.
c24w

15

Vous pouvez ajouter les éléments suivants à votre .vimrcpour avoir le Bdtravail comme bdmais sans toucher les divisions de la fenêtre:

command Bd bp\|bd \#

J'ai trouvé cela comme un complément utile à ce que Mud a répondu.


C'est exactement ce que j'ai dans mon .vimrc. :)
Mud

Et vous pouvez ajouter les 3 commandes pour décharger, supprimer et effacer un tampon: commande! Commande BUN bp \ | bun \ #! Commande BD bp \ | bd \ #! BW bp \ | bw \ # qui est équivalent à ce que bufkill fournit mais avec 3 lignes dans vimrc au lieu d'un plugin de plus de 700 lignes!
fievel

3
Pour moi, cela ne fonctionnait qu'avec cela en .vimrc command! Bd bp|bd #. La commande ci-dessus avec le `` a gardé le tampon dans la liste des tampons.
mljrg


3

Je fais quelque chose de similaire à @Mud, mais je passe au tampon de vue précédent #, au lieu du tampon précédent dans la liste de tampons. Voici une clé de liaison dans mon .vimrc:

nnoremap <silent> <leader>q :lclose<bar>b#<bar>bd #<CR>

Fermez les fenêtres d'emplacement, le cas échéant, basculez vers le tampon d'affichage précédent, puis fermez le dernier tampon commuté.


1

Mon choix est

:sb # | bd #
:sb 1 | bd #
: <1. Recall Buffer> | <2. Delete Buffer>

Pensez comme ça! /// <1. Mémoire tampon de rappel> | <2. Supprimer le tampon>

:vert sb 2 | bd #
:vert sb <tab key~completed file(buffer)name> | bd #

Pourquoi?! Il est facile de retenir 3 (+ 1) mot-clé!

  1. sb split_buffer
  2. bd delete buffer ▶ simple 2 mots-clés
  3. # ou nombre de tampon
  4. vert ▶ short_form de vertical (split_buffer ou autre)

C'est facile et très utile dans de nombreux autres cas!

Bonne journée! :)


0

J'avais l'habitude d'utiliser :

:bp<bar>sp<bar>bn<bar>bd<CR>

Mais j'ai trouvé certaines occasions où il fermait ma fenêtre. En plus de cela, le tampon suivant ou précédent peut ne pas être ce que vous souhaitez afficher dans le fractionnement.

Maintenant je fais ceci:

  • passer au tampon sur lequel je veux travailler
  • Supprimer le tampon alternatif

nnoremap <leader>d :bd#<CR>

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.