Трубопроводы буфер для внешней команды в Vim


Я вроде как Новичок Vim. Я хотел бы отправить содержимое текущего буфера в stdin внешней команды (скажем, mail). Моя конечная цель-установить ярлык для быстрой отправки электронной почты из текущего буфера Vim. Я предполагаю, что это должно быть тривиальным, но я не мог найти способ отправить буфер Vim во внешнюю команду. Спасибо заранее.

2 71

2 ответа:

можно использовать :w !cmd для записи текущего буфера в stdin внешней команды. От :help :w_c:

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

выполнить {cmd} С [range] строки в качестве стандартного ввода (обратите внимание на пробел перед '!'). {cmd} выполняется как с ":!{cmd}", либо '!' заменяется предыдущей командой |:!|.

связанная команда :%!cmd который делает то же самое, а затем заменяет текущий буфер выводом команды. Так что :%!sort вызовет внешнюю команду сортировки для сортировки текущего буфера на месте.

вот пример, как отправить текущий буфер на внешний stdin из командной строки:

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

Это полезно для создания сценариев.

для получения дополнительных трюков командной строки, проверьте: