Lancer des commandes dans Vim

Soit le fichier texte suivant:

1
2
3
4
5
6
 * Alpha
 * Foxtrot
 * Charlie
 * Delta
 * Echo 
 * Bravo

Dans VIM il suffit de taper.

1
:%sort ou :%!sort

Pour obtenir

1
2
3
4
5
6
 * Alpha
 * Bravo
 * Charlie
 * Delta
 * Echo 
 * Foxtrot

On peux aussi lancer plein de commandes amusantes

1
2
3
4
5
 * Doublon
 * Pas unique
 * Doublon
 * 
 * ...
1
!sort | uniq -c | tr "[A-Z]" "[a-z]"

Pour ceux qui ne se rappelle plus trop les commandes de Bash

  • sort trie le texte
  • uniq -c prend toute les valeurs et les comptes c’est l’équivalent d’un GROUP BY en SQL
  • tr est l’abréviation de transpose je remplace les lettres en [A-Z] par leur équivalent en minuscule.
1
2
3
4
  1  * 
  1  * ...
  2  * doublon
  1  * pas unique

Si vous sélectionnez le texte avec v et que vous appuyer sur :

Alors vous devez voir la commande suivante

1
:'<,'>

et Ajoutez la commande que vous allez appliquer à la sélection. Par exemple :'<,'>!sort

Plus rigolo. On peux appeler des langages que l’on veut dans VIM

1
<?php echo "bonjour";

Tapez !! vous devriez voir apparaître

1
:.!

Compléter avec :.!php

votre texte va se remplacer

1
bonjour

Cela marche aussi avec python

1
print "olleh"[::-1]

Avec le curseur sur la ligne, appuyer sur !! puis ajoutez :.!python

La ligne devient

1
hello

Exécuter une commande Bash depuis VIM

La commande suivante

1
php app/console cache:clear --env=prod

Si vous voulez exécuter la commande mais ne pas modifiez la ligne.

1
:.w !bash

C’est un peu moins simple.

  • :. représente la ligne actuelle.
  • w représente une écriture
  • !bash via Bash.

La documentation de VIM :help :w_c

en résumé

  • Si vous voulez appliquer votre commande sur tout le fichier :%!commande
  • S vous voulez juste la ligne :.!commande ou tapez !!.
  • Si vous voulez sur une sélection v ou V puis : vous deviez voir ceci :'<,'>, ajoutez la commande souhaitée.