Le traqueur de bogues Gnats a une commande (edit-pr) qui ouvre un ticket dans $ EDITOR. Mon $ EDITOR est VIM, et lorsque cette commande ouvre le ticket dans $ EDITOR, j'aimerais effectuer automatiquement des modifications scriptées sans avoir à effectuer de frappes supplémentaires.
Existe-t-il un moyen d'écrire un script VIM pouvant être exécuté de manière non interactive comme ceci?
Même si vous avez déjà reçu une réponse à votre question, d'autres pourraient trouver cela utile.
Les commandes Vim peuvent également être spécifiées dans un fichier qui est exécuté en utilisant l'
-s
option:Exemple:
Cela utilisera Vim pour mettre en retrait le contenu du fichier, enregistrer et quitter.
la source
Les commandes Vim peuvent être spécifiées sur la ligne de commande lorsque vous exécutez le programme comme ceci:
Vous pouvez continuer à ajouter des commandes en ajoutant des
"+[cmd]"
arguments. Vous pouvez soit vous arrêter là et l'éditeur s'ouvrira, exécutera ces commandes et attendra ou vous, ou vous pouvez ajouter un"+:wq"
pour enregistrer et fermer le fichier.Vous pouvez également écrire un script à l'aide de la syntaxe vimscript et l'encapsuler dans une fonction à appeler à l'ouverture du fichier ou dans un script distinct à importer et à appliquer au tampon à l'aide de la syntaxe ci-dessus.
la source
Pour exécuter vim en mode non interactif, vous pouvez utiliser un paramètre
+{command}
/-c {command}
ou-s
qui vous permettra d'exécuter les commandes vim après la lecture du premier fichier.Vérifiez quelques exemples ci-dessous.
Des entrées et sorties standard simples à l'aide de tuyaux peuvent être obtenues par la commande:
Pour modifier un fichier et enregistrer les modifications dans un autre:
Pour éditer le fichier sur place, vous pouvez utiliser
-s {scriptin}
pour que le fichier de script soit lu, par exemple:Pour analyser le fichier et l'envoyer à la sortie du pipeline, vous pouvez essayer ce qui suit:
ou:
Voir plus: Comment éditer des fichiers de manière non interactive (par exemple dans un pipeline)? à Vim SE
la source
:hi
repose le téléavertisseur de Vim, par exemple, où peut- on faire défiler et afficher-- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit
? Il n'apparaît pas dans la liste des tampons, et l'écriture avec:w
écrit un fichier vide (et la touche `` Entrée '' fait défiler ou quitter le téléavertisseur) que je peux utiliser:redir! >file | :hi | :redir END
, qui capture autant que je fais défiler. Je pense que cela peut fonctionner mécaniquement comme un bidirectionnelmore
. Je dois me demander pourquoi:help
et:hi
ne sont pas tous les deux paginés ou tamponnés par RO ...