Exécuter des commandes VIM dans un script shell
Je suis en train d'écrire un script bash qui exécute un programme en ligne de commande (Gromacs), enregistre les résultats, modifie les fichiers d'entrée, puis les boucles à travers le processus de nouveau. Je suis en train d'utiliser VIM pour modifier l'entrée des fichiers texte, mais je n'ai pas été en mesure de trouver une façon d'exécuter interne VIM commandes comme :1234, w, x, dd, ect. de la .sh fichier après l'ouverture de mes fichiers d'entrée dans VIM ("vim conf.gro").
Est-il un moyen pratique pour exécuter les commandes de VIM à partir du shell script?
source d'informationauteur Nikolay Rodionov
Vous devez vous connecter pour publier un commentaire.
Je pense que
vim -w/W and vim -s
est ce que vous cherchez.La "vim opérations/séquence de touches" vous pouvez enregistrer avec
vim -w test.keys input.file
aussi, vous pouvez écrire letest.keys
trop. par exemple, enregistrez ce fichier dans le fichier:cela va faire:
avec cette
test.keys
fichier, vous pouvez faire:votre "myInput.fichier" seraient traités par les opérations ci-dessus, et enregistré. vous pourriez avoir cette ligne dans votre script shell.
vimgolf est en utilisant le même moyen de sauver les utilisateurs de la solution.
Vous pouvez créer un script Vim via le
-c
drapeau.Cependant qui ne mène pas loin.
:normal
. par exemple,:norm dd
commands.vim
) et puis:source
via-S
.:h ex-cmd-index
Donc vous allez vous retrouver avec quelque chose comme ça. Avec tous vos vim commandes à l'intérieur de
commands.vim
.Vous pouvez aussi rechercher dans l'aide de
sed
et/ouawk
pour un traitement de texte.Alternatives
À moins que vous vraiment besoin d'un Vim capacités, vous êtes probablement mieux d'utiliser non-interactive-outils comme
sed
awk
ou Perl /Python /Ruby /votre langage de script favori ici.Cela dit, vous pouvez utiliser Vim en mode non interactif:
Silencieux En Mode Batch
Pour de très simple traitement de texte (c'est à dire à l'aide de Vim comme une amélioration de 'sed' ou 'awk', peut-être juste bénéficiant de l'amélioration des expressions régulières dans un
:substitute
de commande), l'utilisation Ex-mode.Note: silent mode batch (
:help -s-ex
) bousille la console Windows, de sorte que vous pourriez avoir à faire unecls
à nettoyer après le Vim run.À l'Attention de: Vim va se bloquer en attente d'entrée si le
"commands.ex"
le fichier n'existe pas; mieux vérifier à l'avance pour que son existence! Sinon, Vim peut lire les commandes à partir de l'entrée standard. Vous pouvez également remplir un nouveau tampon avec le texte lu à partir de stdin, et les commandes de lecture de stderr si vous utilisez le-
argument.L'Automatisation Complète
Pour les plus avancés de traitement impliquant de multiples fenêtres et d'automatisation réel de Vim (où vous pouvez interagir avec l'utilisateur ou quitter Vim en cours d'exécution pour permettre à l'utilisateur de prendre des cours), l'utilisation:
Voici un résumé des arguments: