Comment exécuter des commandes Unix à partir de Vim?

77

Comment puis-je exécuter des commandes Unix alors que je suis dans vim?

funk-shun
la source

Réponses:

103

Allez en mode commande Esc, puis lancez :!unix_command. Tout ce qui est lancé à partir de l' :invite commençant par un bang !sera exécuté en tant que commande shell unix. Vous verrez la sortie et pourrez appuyer sur une touche pour revenir à votre travail dans vim.

Si vous avez sélectionné du texte en mode visuel et que vous souhaitez l'envoyer À une commande en tant que STDIN, appuyez sur !!et entrez votre commande. Les résultats de la commande remplaceront le texte que vous avez sélectionné.

Caleb
la source
14
En outre, !! sans texte sélectionné permet d' exécuter une commande puis insérez le résultat à votre position actuelle du curseur - pas besoin d'envoyer des trucs à STDIN et le remplacer si vous n'avez pas besoin / voulez.
Kromey
4
de plus, si vous voulez simplement mettre le résultat d'une commande dans votre document, faites-le simplement :r!unix_command. Ceci est utile pour des commandes telles quedate
Yab,
2
Vous pouvez également exécuter plusieurs lignes de votre tampon vi par le shell (ou tout interpréteur) et les remplacer par le résultat de l'exécution. par exemple: :10,20!shou, 'a,'b!sh
formez des
1
Une autre chose qui mérite d’être soulignée est que cela dépend du système d’exploitation que vous utilisez. Si vous utilisez Windows, il exécutera une commande shell Windows. Beaucoup de personnes qui liront ceci le sauront déjà, mais pour les personnes venant de Google, j’ai pensé que cela mériterait d’être mentionné.
Andrew
25

À partir d'un miroir d' aide VIM :

:shell        :sh[ell]        start a shell
:!            :!{command}     execute {command} with a shell
Jay Elston
la source