Vim en mode 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.
- Les clés communes telles que Escapeou Controlne fonctionnent pas correctement.
Fondamentalement, vi
le mode visuel de ex
Vim Ex est simplement une émulation de ex
(ils exécutent toujours le même code), il est donc possible d’obtenir le mode de commande de ex
vi et vice-versa. Il existe actuellement deux modes: le mode Ex ( vim -e
) et le 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 de rédacteurs en chef: 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)
Éditer des fichiers de manière non interactive est l’utilisation la plus courante et les utilisateurs l’utilisent de la même manière sed
et awk
, bien qu’ils soient davantage orientés vers le flux - ils lisent uniquement le fichier du début à la fin (ils ne sont pas conçus pour fonctionner avec plusieurs lignes ) while vim
est orienté tampon: vous pouvez avancer ou reculer dans le fichier à votre guise, ce qui le rend si puissant.
Fondamentalement:
sed
est un S tream ED Itor, pas un éditeur de fichiers.
Néanmoins, les gens semblent en abuser pour essayer d’éditer des fichiers et la vérité est qu’il ne les édite pas. Deuxièmement, ses options telles que in-place ( -i
) sont des extensions FreeBSD non standard et peuvent ne pas être disponibles sur d'autres systèmes d'exploitation. Donc, si vous voulez éviter le code non transférable, les frais d’E / S et les effets secondaires négatifs (tels que la destruction des liens symboliques), vous devez utiliser ex
l’éditeur standard basé sur les commandes UNIX (avec ed
) BashFAQ .
Une autre chose que je trouve utile en mode Ex est de l'utiliser comme un terrain de jeu (similaire à la python
console) où vous pouvez exécuter plusieurs commandes à la suite, travailler / déboguer des expressions régulières, vérifier la configuration de vim, exécuter des commandes externes ou travailler avec des registres, etc. .
Par exemple:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
ce qui est plus facile en mode Ex qu'en mode normal (où vous ne pouvez voir que votre dernière commande).
Usages pratiques
J'ai les alias suivants dans mon .bash_aliases
:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
Remarque: L'utilisation bufdo
n'est pas ex
conforme à la méthode POSIX (selon le manuel ), vous pouvez donc envisager de l'utiliser avec find
. Le !
est utilisé pour forcer la commutation des tampons sans sauvegarder (sinon un avertissement est généré).
Le premier que j'utilise pour rogner les espaces de fin dans tous mes fichiers source, par exemple:
trim **/*.php
La seconde convertit tous les onglets en espaces (de manière récursive), par exemple:
retab **/*.php
Pour moi, utiliser retab
suffit, mais certains inconvénients sont décrits ici . Ajoutez un supplément -V
pour une sortie de verbosité accrue.
Notez que les exemples ci-dessus utilisant zsh / bash4 globbing ( **
), assurez-vous donc que votre shell le supporte et qu'il est activé.
Pour des exemples plus pratiques (comme l'analyse de fichiers HTML), vérifiez:
Apprenez également plus sur le mode Ex sur:
Q
etq:
sont très différents. Vous faites seulement référence àQ
droite?