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, vile mode visuel de exVim 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 exvi 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, exet 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 sedet 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 vimest orienté tampon: vous pouvez avancer ou reculer dans le fichier à votre guise, ce qui le rend si puissant.
Fondamentalement:
sedest 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 exl’é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 pythonconsole) 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 bufdon'est pas exconforme à 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 retabsuffit, mais certains inconvénients sont décrits ici . Ajoutez un supplément -Vpour 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:
Qetq:sont très différents. Vous faites seulement référence àQdroite?