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

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

+66
23 окт. '11 в 16:13
источник поделиться
2 ответа

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

: [диапазон] w [обряд] [++ opt]! {cmd}

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

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

+98
23 окт. '11 в 16:22
источник

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

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

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

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

+1
25 мая '15 в 21:13
источник

Посмотрите другие вопросы по меткам или Задайте вопрос