Я как бы начинающий 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
Это полезно для создания сценариев.
Для получения дополнительных команд командной строки проверьте: