Самый простой вариант для этого - загрузить плагин RunView с веб-сайта Vim и использовать его.Если вы let g:runview_filtcmd
равны своей командной строке SendEmail, она возьмет содержимое текущего буфера, передаст его в SendEmail и выведет вывод в отдельном окне.Я думаю, что это достигает того, что вам нужно.Если вы хотите использовать RunView для других задач, вы можете пропустить шаг g:runview_filtcmd
и просто добавить эту команду:
:command! -nargs=* -range=% SendEmail <line1>,<line2>RunView SendEmail -e oneoption -b twooption <args>
, а затем выполнить:
:SendEmail -u "subject"
или
:'<,'>SendEmail -u "subject"
Я не проверял ничего из этого, но он должен работать очень легко.
Если вы хотите сделать это вручную, вам, вероятно, придется написать функцию.Способ работы RunView состоит в том, чтобы скопировать весь буфер в регистр, создать новое окно, вставить буфер в конец этого окна и затем отфильтровать новые строки в программе.Он добавляет отметку даты / времени в начале для разделения нескольких запусков одной и той же программы.Это не будет слишком сложно для копирования, но вам, вероятно, понадобится функция.
Изменить в ответ на комментарий:
Если вы хотите отправитьпуть в качестве аргумента для SendEmail, вы могли бы сделать что-то вроде этого (я не проверял это, поэтому, возможно, потребуется немного изменить):
command! -nargs=* SendEmailAsAttachment exe '!SendEmail -e oneoption -b twooption -f' expand('%:p') <args>
Обратите внимание, что :exe
объединяет аргументы с пробеломтак что вызов SendEmailAsAttachment -u "subject"
расширяется до:
!SendEmail -e oneoption -b twooption -f /path/to/filename.txt -u "subject"
См .:
:help expand()
:help :exe