Передача буфера во внешнюю команду в Vim - PullRequest
81 голосов
/ 23 октября 2011

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

Ответы [ 2 ]

115 голосов
/ 23 октября 2011

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

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

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

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

1 голос
/ 26 мая 2015

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

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

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

Чтобы узнать больше о трюках командной строки, проверьте:

...