Le didacticiel mentionne que le mode Ex est destiné au traitement par lots. Puisqu'il s'agit pour moi d'une nuisance plutôt que d'un outil, j'aimerais voir quelques exemples pratiques. Qui l'utilise? Pourquoi?
À quoi sert le mode EX pour le traitement par lots?
Réponses:
Vim en mode Ex (également appelé
ex
) est utile lorsque:Modification de fichiers non-interactive est l'utilisation et les plus courantes à l' utiliser de manière similaire
sed
etawk
, mais ils sont plus sont orientés flux - ils ne lisent que le fichier avant du début à la fin toutvim
est orienté BUFFER - vous pouvez aller de l' avant et vers l' arrière dans le fichier comme vous le souhaitez. Deuxièmement, les expressions régulières de vim sont plus puissantes que les expressions de awk et sed (elles ne sont pas conçues pour fonctionner avec plusieurs lignes) - par exemple, vim peut correspondre sur plusieurs lignes et ne prend en charge aucune correspondance.Ex est également un éditeur (prédécesseur direct de vi) et dans Vim - le mode Ex émule
ex
(ils exécutent toujours le même code), il est donc possible d'accéder au mode de commandeex
de l'intérieur de vi et vice-versa. Il existe un mode Ex (vim -e
) et un mode Ex amélioré qui permet des commandes plus avancées que le mode Ex compatible vi (vim -E
). Voir: Quelle est la différence entre le mode Ex et le mode Ex amélioré?Exemple 1
Voici exemple simple de changer
127
à128
votrehosts
fichier et imprimer la sortie:est équivalent à:
Pour une solution plus avancée, vous pouvez avoir un fichier avec des commandes vim et l'utiliser par une approche plus classique de la redirection d'E / S:
Exemple 2
Vous pouvez également utiliser des plugins vim pour effectuer certaines tâches.
Par exemple, le one-liner suivant convertirait votre fichier de code source en html en utilisant l'un des plugins standard:
Il générera un fichier html (avec mise en évidence de la syntaxe) à partir de votre code (écrit dans n'importe quelle langue prise en charge) qui est prêt pour l'impression ou la publication sur votre site Web.
Exemple 3
Ou un exemple réel en direct de la spécification RPM :
Exemple 4
Le script suivant créera un nouveau fichier html en téléchargeant html du site Example et en remplaçant son corps par une table 20x20 générée automatiquement avec des nombres aléatoires:
Usage:
Plus d'exemples:
Voir également:
la source
Le mode Ex sert principalement à effectuer la même action sur un certain nombre de fichiers.
Supposons que vous ayez 25 fichiers .html avec:
Au lieu d'ouvrir chacun d'entre eux, vous pouvez utiliser le mode Ex pour tout changer en
index.html
:la source
for file in *.html; do vim -es -c '%s/home\.html/index.html/g' -c wq "$file"; done
.Depuis le récent 7.3 qui, en tant que support d'annulation permanent, le mode ex et d'autres formes de traitement par lots vim est supérieur aux autres méthodes non vim, car il n'encombrera pas l'historique d'annulation.
Ajout: 'annulation persistante' si activée, conserve toutes les modifications apportées à un fichier (jusqu'à une limite) dans l'historique d'annulation, à travers les sessions d'édition de vim. Si le fichier est édité par un programme externe, vim réinitialisera l'historique d'annulation lors de la détection par somme de contrôle qu'il a changé. vim -E vous permettra de modifier un fichier par lots et la modification sera dans l'historique d'annulation.
la source
Cela ne répond pas à votre question sur le traitement par lots, mais c'est une autre façon d'expliquer ce qu'est le mode Ex. Vous savez comment vous appuyez
:
passer en mode ligne de commande et entrer des commandes? Eh bien, le mode Ex vous permet également d'entrer les mêmes commandes, sauf que Vim ne quitte pas le mode Ex après avoir entré une commande, il reste en mode Ex et vous pouvez entrer une autre commande. C'est donc un peu comme un REPL (lire, évaluer, imprimer, boucler), mais sans l'impression (donc juste un REL ...). Je reviendrai sur les raisons pour lesquelles vous voudrez peut-être ce type de REL plus tard. C'est pourquoi il est appelé mode Ex, il vous permet d'entrer des commandes Ex, ce qui est la même chose que le mode ligne de commande, il vous permet d'entrer une commande Ex. Une autre façon de l'expliquer, c'est qu'il vous permet d'entrer et d'exécuter immédiatement le code Vimscript / VimL. Vimscript / VimL est un langage que vous pouvez utiliser pour écrire des plugins Vim. C'est également le langage que vous utilisez pour écrire votre fichier de configuration (proably .vimrc). C'est également la langue que vous utilisez lorsque vous entrez des commandes Ex à partir du mode ligne de commande ou du mode Ex. Donc, de ce point de vue, le mode Ex peut être considéré comme un REL VimL. Pourquoi voudriez-vous un VimL REL? Pour la même raison, les gens aiment les REPL pour d'autres langues. Ils peuvent être très utiles pour déboguer du code ou expérimenter le langage pour voir comment les choses fonctionnent, surtout si vous écrivez des plugins dans VimL ou personnalisez fortement votre fichier de configuration (ce qui signifierait probablement que vous violez le principal SRP et que vous devez le décomposer en plugins).la source
:!python
etc.