web-dev-qa-db-fra.com

Piping du tampon vers une commande externe dans Vim

Je suis une sorte de novice Vim. Je voudrais envoyer le contenu du tampon actuel à stdin de la commande externe (disons mail). Mon objectif final est de définir un raccourci pour envoyer rapidement des e-mails à partir du tampon Vim actuel. Je suppose que cela devrait être trivial, mais je n'ai pas trouvé de moyen d'envoyer le tampon Vim à une commande externe. Merci d'avance.

82
yasar

Vous pouvez utiliser :w !cmd pour écrire le tampon courant dans le stdin d'une commande externe. De :help :w_c:

: [plage] w [rite] [++ opt]! {cmd}

Exécutez {cmd} avec [range] lignes comme entrée standard (notez l'espace devant le '!'). {cmd} est exécuté comme avec ":!{cmd}", tout '!' est remplacé par la commande précédente |:!|.

Une commande associée est :%!cmd qui fait la même chose et remplace ensuite le tampon courant par la sortie de la commande. Alors :%!sort invoquerait la commande de tri externe pour trier le tampon actuel en place.

117
John Kugelman

Voici un exemple comment envoyer le tampon actuel à stdin externe à partir de la ligne de commande:

vim -es +"w >> /dev/stdout" -cq! /etc/hosts

Il est utile à des fins de script.

Pour plus d'astuces en ligne de commande, consultez:

1
kenorb