Piping buffer to external command in Vim

Sono una specie di novizio Vim. Vorrei inviare il contenuto del buffer corrente a stdin del comando esterno (diciamo mail). Il mio scopo finale è quello di impostare una scorciatoia per inviare rapidamente e-mail dal buffer Vim corrente. Immagino che questo dovrebbe essere un argomento banale, ma non sono riuscito a trovare un modo per inviare il buffer Vim ad un comando esterno. Grazie in anticipo.

È ansible utilizzare :w !cmd per scrivere il buffer corrente sullo stdin di un comando esterno. Da :help :w_c :

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

Esegui {cmd} con le linee [range] come input standard (nota lo spazio davanti a '!' ). {cmd} viene eseguito come con ":!{cmd}" , qualsiasi '!' viene sostituito con il comando precedente |:!| .

Un comando relativo è :%!cmd che fa la stessa cosa e quindi sostituisce il buffer corrente con l’output del comando. Quindi :%!sort invocerebbe il comando di ordinamento esterno per ordinare il buffer corrente sul posto.

Ecco un esempio di come inviare il buffer corrente a stdin esterno dalla riga di comando:

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

È utile per scopi di scripting.

Per ulteriori trucchi da linea di comando, verifica:

  • Come scrivere un intero buffer sullo standard output dalla riga di comando?