Я как бы начинающий Vim. Я хотел бы отправить содержимое текущего буфера в stdin внешней команды (скажем, mail). Моя конечная цель - установить ярлык для быстрой отправки электронной почты из текущего буфера Vim. Я предполагаю, что это должно быть тривиально, но я не мог найти способ отправить буфер Vim внешней команде. Спасибо заранее.
Буфер трубопровода для внешней команды в Vim
Ответ 1
Вы можете использовать :w !cmd
для записи текущего буфера в stdin внешней команды. От :help :w_c
:
: [диапазон] w [обряд] [++ opt]! {cmd}
Выполните
{cmd}
с помощью строк[range]
в качестве стандартного ввода (обратите внимание на пространство перед'!'
).{cmd}
выполняется как с":!{cmd}"
, любая'!'
заменяется предыдущей командой|:!|
.
Связанная команда :%!cmd
, которая делает то же самое, а затем заменяет текущий буфер на выход команды. Поэтому :%!sort
будет вызывать внешнюю команду сортировки для сортировки текущего буфера.
Ответ 2
Вот пример того, как отправить текущий буфер на внешний stdin из командной строки:
vim -es +"w >> /dev/stdout" -cq! /etc/hosts
Это полезно для создания сценариев.
Для получения дополнительных команд командной строки проверьте: