Vim en mode Ex (également appelé ex
) est utile lorsque:
- Vous avez besoin de modifier (plusieurs) fichiers de manière non interactive (dans le cadre du script).
- Votre connexion est très lente ou l'écran n'est pas mis à jour après vos actions.
- Les mappages et abréviations sont désactivés.
- Des touches communes telles que Escapeou Controlne fonctionnent pas correctement.
Modification de fichiers non-interactive est l'utilisation et les plus courantes à l' utiliser de manière similaire sed
et awk
, mais ils sont plus sont orientés flux - ils ne lisent que le fichier avant du début à la fin tout vim
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 commande ex
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é?
Ex est la racine d'une famille d'éditeurs: edit, ex et vi. Ex est un super-ensemble de ed, l'extension la plus notable étant une fonction d'édition d'affichage. ex (1)
Exemple 1
Voici exemple simple de changer 127
à 128
votre hosts
fichier et imprimer la sortie:
ex -s +%s/127/128/g +%p +q! /etc/hosts
est équivalent à:
sed s/127/128/g /etc/hosts
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:
echo :%s/127/128/g > cmds.vim
echo :%print >> cmds.vim
echo :%quit! >> cmds.vim
ex -s /etc/hosts < cmds.vim # The same as: vim -s cmds.vim /etc/hosts
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:
ex -s '+let g:html_no_progress=1' '+syntax on' '+set ft=c' '+runtime syntax/2html.vim' -cwqa my_code.c
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 :
vim -E -s Makefile <<-EOF
:%substitute/CFLAGS = -g$/CFLAGS =-fPIC -DPIC -g/
:%substitute/CFLAGS =$/CFLAGS =-fPIC -DPIC/
:%substitute/ADAFLAGS =$/ADAFLAGS =-fPIC -DPIC/
:update
:quit
EOF
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:
" table.vim
%!curl -s example.com
let @t='<table>'.repeat('<tr>'.repeat('<td>_</td>',20).'</tr>',20).'</table>'
/<body
norm!vitd"tP
%s/_/\=system('echo $RANDOM')/g
wq
Usage:
ex -s table.html < table.vim
Cela fonctionnera sur les systèmes de type * nix avec curl installé. Cliquez -V
sur Ajouter pour voir le script en action.
Plus d'exemples:
Voir également: