将当前缓冲区作为字符串(!)管道到外部命令

时间:2014-04-14 18:15:17

标签: shell vim

我将当前缓冲区管道传输到外部命令时出现问题。提出的类似问题无法解决问题。

我想将缓冲区的内容视为字符串,只需将其作为参数传递,其中%s是我文件的内容:

:!thunderbird.exe -compose body=%s

使用%w !{cmd}的常用方法在这里不起作用,因为thunderbird没有从STDIN读取,如果这个假设是错误的,请纠正我。 (Piping buffer to external command in Vim

如何将缓冲区内容作为字符串发送到外部命令?

1 个答案:

答案 0 :(得分:0)

将整个文件的内容复制到ex命令将很困难,因为您需要转义文本。作为替代方案,我建议创建一个函数将文件的内容复制到剪贴板,然后打开一个新的电子邮件,只需将内容粘贴到正文中。

function! Send()
  :%yank +
  :silent !thunderbird.exe -compose
  :redraw!
endfunction

nnoremap <leader>s :call Send()<cr>