Disons que j'ai une fonction, nommée StripWhitespace
.
Je peux l'exécuter sur un seul fichier en ouvrant le fichier et en l'exécutant :StripWhitespace
.
Comment puis-je exécuter automatiquement cette fonction sur un dossier de fichiers et enregistrer les résultats au fur et à mesure?
macro
multiple-files
grenouille carrée
la source
la source
Réponses:
Vous pouvez utiliser l'
-c
argument pour exécuter une commande au démarrage, à partir devim(1)
:Exemple:
Pour quitter ensuite, ajoutez
| :wqa
:la source
Si vous êtes déjà dans Vim, vous pouvez utiliser les commandes
:argdo
ou:bufdo
pour exécuter une commande sur chaque élément de la liste d'arguments ou de la liste de tampons, respectivement.par exemple pour exécuter une
:
commande sur chaque fichier de la liste des arguments:Ou pour appeler une fonction de chaque fichier de la liste des tampons:
Ou pour exécuter une macro
q
sur chaque fichier de la liste des arguments:Vous pouvez ensuite enregistrer tous les tampons modifiés avec
:wall
, ou tout enregistrer et quitter Vim avec:wqall
.Si vous souhaitez écrire les fichiers au fur et à mesure, vous pouvez ajouter un appel à
:update
, comme ceci:Il existe plusieurs façons d’obtenir les fichiers dans Vim en premier lieu, notamment:
vim *
(cela ajoute tous les fichiers à la liste des arguments),:args
commande (qui prend en charge les caractères génériques et les expressions de backtick) pour remplir la liste d'arguments, ou la:argadd
commande pour y ajouter des fichiers,:e
,:Ex
ou un plug - in d'ouverture de fichier.la source
'hidden'
d'être défini; (2) la: update
commande est une légère amélioration par rapport au:w
fait qu'elle n'écrit que si une modification a été apportée, donc:bufdo update
ou:argdo update
écrit tous les tampons ou arguments modifiés.update
. J'ai envisagé de mentionnerhidden
quand j'écrivais la réponse, mais j'ai décidé de ne pas le faire parce que je ne voulais pas trop le compliquer. À la réflexion cependant, cela devrait être là. Je mettrai à jour la réponse pour inclure les deux suggestions actuellement.:wall
, qui a également l'avantage de ne pas parcourir les tampons et de vous éloigner de l'endroit où vous avez commencé. Je suppose que:argdo update
c'est encore une autre histoire - peut-être que vous ne voulez pas écrire dans des tampons qui ne sont pas dans votre liste d'arguments.