En supposant que j'ai plusieurs fichiers ouverts en tant que tampons dans Vim. Les fichiers ont *.cpp
, *.h
et certains le sont *.xml
. Je souhaite fermer tous les fichiers XML avec :bd *.xml
. Cependant, Vim ne permet pas cela (E93: Plus d'une correspondance ...).
Y a-t-il un moyen de faire ça?
PS je sais que cela :bd file1 file2 file3
fonctionne. Donc , puis - je évaluer en quelque sorte *.xml
à file1.xml file2.xml file3.xml
?
<tab>
vous permet uniquement de parcourir les correspondances, en mettant une seule entrée sur la ligne de commande, en<C-a>
ajoutant toutes les correspondances à la fois.vim-rsi
installé (je pense que c'est un must pour tout le monde sur * nix), pour obtenir le<C-a>
travail de la manière originale dans la ligne de commande, vous devriez utiliser à la<C-x>
<C-a>
place.Supprime la plage de tampon de 3 à 5.
la source
Vous pouvez également utiliser alternativement:
la source
Vous pouvez utiliser ceci.
Il devrait être assez facile de l'ajouter à une commande.
la source
glob()
ne vous donnera que les fichiers existants (sur votre disque dur), et non les tampons ouverts.fnameescape()
tamponner les noms.c:/Program files/foo.bar
, et mêmefoo.bar.foo
et cela a parfaitement fonctionné.fnameescape()
peut avoir été nécessaire si j'ai utilisé les noms de tampon. Mais je vérifie seulement si les noms de tampon correspondent à une expression donnée:\.{ext}$
- Je donne des numéros de tampon à: bd`. Je n'ai aucune raison d'échapper à quoi que ce soit pour la correspondance regex.Essayez le script ci-dessous. L'exemple est pour "txt", changez-le si nécessaire, par exemple en "xml". Les tampons modifiés ne sont pas supprimés. Appuyez sur \ bd pour supprimer les tampons.
[Edit] Idem sans: bufdo (comme demandé par Luc Hermitte, voir commentaire ci-dessous)
la source
:bufdo
car cela gâche la fenêtre actuelle.J'avais également besoin de cette fonctionnalité tout le temps. C'est la solution que j'ai dans mon vimrc.
Maintenant, je peux juste faire
:BW regex
(par exemple:BW \.cpp$
, effacer tous les tampons correspondants qui correspondent à ce modèle dans leur chemin.Si vous souhaitez supprimer plutôt que d'effacer, vous pouvez bien sûr remplacer
exec 'bw ' . join(l:matchList, ' ')
parexec 'bd ' . join(l:matchList, ' ')
la source
:badd
,:bdelete
,:bufdo
,:bn
...)Très simplement: utilisez la
:bd[elete]
commande. Par exemple,:bd[elete] buf#1 buf#5 buf#3
supprimera les tampons 1, 3 et 5.la source
Vous pouvez simplement utiliser:
puis utilisez simplement
<c-a>
pour faciliter la complétion de tous les fichiers ouverts du type de fichier spécifié.par exemple, vous avez 1.xml, 2.xml, 3.xml et 4.xml, vous pouvez faire:
puis appuyez
<c-a>
vim se complétera automatiquement pour vous comme suit:
vous pouvez simplement appuyer sur Entrée pour terminer la commande.
si vous avez apporté des modifications à l'un des fichiers mentionnés ci-dessus, n'oubliez pas de faire:
la source