27 votes

Comment fermer le tampon sans fermer la fenêtre ?

Je ouvre généralement quelques fenêtres et garde quelques buffers ouverts. Comme ma méthode dans l'exploration des buffers consiste à utiliser des raccourcis rapides pour :bn et :bp, je veux fermer les buffers inutiles pour ne pas me distraire en surfant entre les buffers.

Mais le problème, c'est que lorsque je lance :bd et :bw, cela provoque la fermeture de la fenêtre également, dans le cas où j'en ai plusieurs d'ouvertes. Comment puis-je fermer (supprimer) un buffer et laisser les fenêtres intactes ?

Solution inspirée par la réponse de @peth

:command! BW :bn|:bd#

C'est simple. Cela ne fonctionne pas très bien avec un seul buffer ouvert (j'obtiens un comportement différent en fonction de la façon dont j'ouvre les fichiers) mais ce n'est pas un gros problème. :)

25voto

Javier Torón Points 51

J'ai un peu trafiqué cela et j'en suis enfin arrivé à :

:bp | sp | bn | bd

Voici la version copier/coller pour le mappage des touches :

:bpspbnbd

Ou une commande pour votre .vimrc (à appeler avec :Bd) :

command Bd bp | sp | bn | bd

Je l'ai testé assez et cela fonctionne de manière cohérente dans différentes conditions. Lorsqu'il est utilisé sur le dernier tampon, il vous laissera avec un nouveau tampon vierge.

3 votes

Je perds ma division si je ferme un tampon ouvert dans les deux fenêtres, comme le dernier tampon. +1 pour être plus simple que les scripts wikia pour bd sans fermer la fenêtre.

0 votes

Je utilisais vim-bbye mais votre réponse est beaucoup plus simple et ne dépend d'aucun script. Merci.

15voto

peth Points 9170

Il peut être pénible, cette question est soulevée encore et encore sur #vim (Freenode), aussi.

Certaines personnes recommandent de ne pas supprimer les tampons et de commuter avec :b partial au lieu de :bn, ce qui fonctionne, mais ce n'est pas ce que vous demandez.

La meilleure façon que je connaisse de le faire est de basculer vers un autre tampon et ensuite :bd#, que vous pourriez bien sûr mapper.

Voir aussi Supprimer un tampon sans fermer la fenêtre sur le Vim wikia.

0 votes

Le script semble être une solution que je suis prêt à accepter s'il n'y a pas de solution officielle. :)

5voto

Unnati Gutpa Points 11

Une fenêtre est un viewport dans un tampon. (Voir :help window.) Vous ne pouvez pas avoir une fenêtre sans un tampon associé. Vous pouvez utiliser une commande telle que :enew pour remplacer le contenu de la fenêtre actuelle par un tampon vide, cependant.

1 votes

Je m'attendais à ce qu'après la suppression d'un tampon, vim puisse basculer vers un autre tampon, ou en ouvrir un nouveau si nécessaire.

0 votes

@progo, cela nécessiterait un peu de scripting, c'est-à-dire un plugin ou un simple mapping.

2voto

Rick Points 11

Le plugin bufkill.vim fonctionne également. J'aime l'utiliser avec vim-command-w pour une fonctionnalité et des agréments supplémentaires (comme fermer un split s'il s'agit du dernier tampon ou fermer vim s'il s'agit du dernier tampon/split).

1voto

rustushki Points 19

Voici une autre solution :

map o nc

En tapant Ctrl+W puis o, une nouvelle fenêtre est créée silencieusement et la vieille fenêtre est fermée. Le curseur est laissé dans la nouvelle fenêtre. Il y a plusieurs effets positifs :

  1. Les dimensions de votre division d'origine sont préservées.
  2. Un tampon vide est chargé dans la nouvelle division.
  3. Le tampon d'origine est toujours chargé, utilisez :buffers pour le lister.
  4. Ctrl+o déplace le curseur à sa position d'origine dans l'ancien tampon si besoin.
  5. Fonctionne bien même si une seule fenêtre est chargée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X