Comment fermer un seul tampon (parmi tant d’autres) dans Vim?

J’ouvre plusieurs fichiers dans Vim, par exemple, en cours d’exécution

vim a/*.php 

qui ouvre 23 fichiers.

Je fais ensuite ma retouche et lance deux fois

 :q 

qui ferme tous mes tampons.

Comment pouvez-vous fermer un seul tampon dans Vim?

Un mot d’avertissement: “w ne signifie pas écrire mais pour wipeout!”

Plus de manuels:

: bd

Décharger le tampon [N] (valeur par défaut: tampon actuel) et le supprimer de la liste des tampons. Si le tampon a été modifié, cela échoue, sauf si [!] Est spécifié, auquel cas les modifications sont perdues. Le fichier rest inchangé.

Si vous savez ce que vous faites, vous pouvez également utiliser:

: bw

Comme |: bdelete |, mais supprimez vraiment le tampon.

Si cela n’est pas évident par les réponses précédentes:

: bd fermera le tampon en cours. Si vous ne voulez pas saisir la liste de tampons.

Vérifiez votre identifiant de tampon en utilisant: les tampons

vous verrez la liste des tampons comme

 1 a.php 2 b.php 3 c.php 

si vous voulez supprimer b.php du tampon

 :2bw 

si vous voulez supprimer / fermer tous les tampons

 :1,3bw 

Plutôt que de parcourir la sortie de la commande: ls et de supprimer (décharger, effacer ..) un tampon en spécifiant son numéro, je trouve que l’utilisation de noms de fichiers est souvent plus efficace.

Par exemple, après avoir ouvert quelques fichiers .txt pour rafraîchir mes souvenirs, copiez et collez quelques lignes de texte à utiliser comme gabarit. Etc.

 :bd txt  

Notez que la chaîne correspondante ne doit pas être au début du nom de fichier.

Ce qui précède affiche la liste des noms de fichiers qui correspondent à ‘txt’ en bas de l’écran et conserve la commande: bd que j’ai initialement tapée intacte, prête à être complétée.

Voici un exemple:

 doc1.txt doc2.txt :bd txt 

Je pourrais revenir en arrière sur le bit ‘txt’ et taper le nom du fichier que je souhaite supprimer, mais là où cela devient vraiment pratique, je n’ai pas à le faire: si j’appuie sur la touche Tab, Vim termine automatiquement ma commande avec le premier match:

 :bd doc1.txt 

Si je veux me débarrasser de ce tampon particulier, je dois juste appuyer sur Entrée.

Et si le tampon que je veux supprimer se trouve être la deuxième (troisième .. etc.) correspondance, il suffit de continuer à appuyer sur la touche Tab pour faire passer ma commande: bd dans la liste des correspondances.

Naturellement, cette méthode peut également être utilisée pour basculer vers un tampon donné via des commandes telles que: b ..: sb .. etc.

Cette approche est particulièrement utile lorsque l’option «cachée» Vim est définie, car la liste des tampons peut rapidement devenir volumineuse, couvrant plusieurs écrans et rendant difficile la détection du tampon particulier que je recherche.

Pour tirer le meilleur parti de cette fonctionnalité, il est préférable de lire le fichier d’aide Vim suivant et de modifier le comportement de l’achèvement de la ligne de commande Tab afin qu’il soit le mieux adapté à votre stream de travail:

 :help wildmode 

Le comportement que j’ai décrit ci-dessus résulte du paramètre suivant, que j’ai choisi pour la cohérence afin d’émuler l’achèvement de bash:

 :set wildmode=list:longest,full 

Au lieu d’utiliser des numéros de tampons, le mérite de cette approche est que je retiens généralement au moins une partie d’un nom de fichier donné pour me permettre de cibler directement le tampon plutôt que de rechercher son numéro via la commande: ls.

Utilisation:

  • :ls – pour lister les tampons
  • :bd#n – pour fermer le tampon où #n est le numéro du tampon (utilisez ls pour l’obtenir)

Exemples:

  • supprimer le tampon 2:

     :bd2 

Vous pouvez également mapper les touches de fonction suivantes et précédentes sur les touches de fonction, facilitant ainsi le cyclisme

 map  :bprevious map  :bnext 

de mon vimrc

Que diriez-vous

 vim -O aa 

De cette façon, vous pouvez éditer un seul fichier sur votre gauche et naviguer dans tout le répertoire sur votre droite … Juste une pensée, pas la solution …

[EDIT: c’était une suggestion stupide à une époque où je ne connaissais pas assez Vim. S’il vous plaît ne pas utiliser des tabulations au lieu de tampons; les tabs sont les “mises en page” de Vim]

Peut-être passer à l’utilisation des tabs?

vim -pa/*.php ouvre les mêmes fichiers dans des tabs

gt et gT commutent les tabs d’avant en arrière

:q ferme uniquement l’onglet en cours

:qa ferme tout et quitte

:tabo ferme tout sauf l’onglet en cours

Ceux qui utilisent un plugin de navigation en tampon ou en arborescence, comme Buffergator ou NERDTree, devront basculer ces séparations avant de détruire le tampon actuel – sinon vous enverrez vos divisions dans wonkyville

J’utilise:

 "" Buffer Navigation " Toggle left sidebar: NERDTree and BufferGator fu! UiToggle() let b = bufnr("%") execute "NERDTreeToggle | BuffergatorToggle" execute ( bufwinnr(b) . "wincmd w" ) execute ":set number!" endf map  w :call UiToggle() 

Où ” NERDTreeToggle ” dans cette liste est la même chose que de taper :NERDTreeToggle . Vous pouvez modifier cette fonction pour l’intégrer à votre propre configuration.