web-dev-qa-db-fra.com

Comment fermer un seul tampon (sur plusieurs) dans Vim?

J'ouvre plusieurs fichiers dans Vim, par exemple, en exécutant

vim a/*.php

qui ouvre 23 fichiers.

Je fais ensuite mon édition et lance le suivant deux fois

:q

qui ferme tous mes tampons.

Comment pouvez-vous fermer un seul tampon dans Vim?

420

n mot d'avertissement: "w ne signifie pas écrire mais wipeout!"

Plus de manuels:

: bd

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

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

: pc

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

515
hhh

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

: bd fermera le tampon actuel. Si vous ne voulez pas attraper la liste des tampons.

344
RedBlueThing

Vérifiez votre identifiant de tampon avec: buffers

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
98
nightingale2k1

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, l'utilisation de noms de fichiers est souvent plus efficace.

Par exemple, après avoir ouvert quelques fichiers .txt pour me rafraîchir la mémoire, copiez et collez quelques lignes de texte à utiliser comme modèle, etc., puis tapez ce qui suit:

:bd txt <Tab>

Notez que la chaîne correspondante ne doit pas nécessairement figurer 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 saisie 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 cela devient vraiment pratique, c'est que je n'ai pas à le faire: si j'appuie une nouvelle fois sur la touche de tabulation, 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 correspondance (troisième, etc.), il me suffit de continuer à appuyer sur la touche de tabulation pour que ma commande: bd parcourt la liste des correspondances.

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

Cette approche est particulièrement utile lorsque l'option Vim "masqué" est définie, car la liste des mémoires tampon peut rapidement devenir assez longue, recouvrant plusieurs écrans et compliquant la tâche de repérer la mémoire tampon recherchée.

Pour tirer le meilleur parti de cette fonctionnalité, il est probablement préférable de lire le fichier d'aide Vim suivant et d'ajuster en conséquence le comportement de la complétion de la ligne de commande Tab afin qu'il corresponde mieux à votre flux de travail:

:help wildmode

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

:set wildmode=list:longest,full

Contrairement à l'utilisation de numéros de mémoire tampon, le mérite de cette approche réside dans le fait que je me souviens généralement d'au moins une partie d'un nom de fichier donné, ce qui me permet de cibler directement la mémoire tampon plutôt que de devoir d'abord rechercher son numéro via la commande: ls.

41
guv'

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
    
36
Shaun

Vous pouvez également mapper les touches de fonction suivantes et précédentes sur les touches de fonction, ce qui facilite grandement le parcours dans les mémoires tampons.

map <F2> :bprevious<CR>
map <F3> :bnext<CR>

de mon vimrc

14
Ravi

[EDIT: c’était une suggestion stupide de la part d’une époque où je ne connaissais pas assez Vim. S'il vous plaît ne pas utiliser des tabulations au lieu de tampons; les onglets sont les "agencements de fenêtre" de Vim]

Peut-être passer à utiliser des onglets?

vim -p a/*.php ouvre les mêmes fichiers dans des onglets

gt et gT basculer les onglets d'avant en arrière

:q ne ferme que l'onglet en cours

:qa ferme tout et sort

:tabo ferme tout sauf l'onglet actuel

1
Leonid Shevtsov

Ceux qui utilisent un plugin de navigation dans la mémoire tampon ou dans l'arborescence, comme Buffergator ou NERDTree, devront basculer ces scissions avant de détruire le tampon actuel - sinon, vous enverrez vos scissions à 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  <silent> <Leader>w  <esc>:call UiToggle()<cr>   

Où "NERDTreeToggle" dans cette liste est identique à la saisie de :NERDTreeToggle. Vous pouvez modifier cette fonction pour l'intégrer à votre propre configuration.

1
New Alexandria

Que diriez-vous

vim -O a a

De cette façon, vous pouvez éditer un seul fichier sur votre gauche et parcourir l'intégralité du répertoire sur votre droite ... Juste une pensée, pas la solution ...

1
Santi