2014-04-14 17 views
0

將當前緩衝區配管到外部命令時出現問題。提出的類似問題無法解決問題。作爲字符串(!)將當前緩衝區配置爲外部命令

我想緩衝區的內容當作一個字符串,只是把它作爲像這樣的說法,其中%s是我的文件的內容:

:!thunderbird.exe -compose body=%s 

使用%w !{cmd}通常使用的方法是不在這裏工作,因爲thunderbird不會讀STDIN,如果這個假設是錯誤的,請糾正我。 (Piping buffer to external command in Vim

如何將緩衝區內容作爲字符串發送到外部命令?

回答

0

將整個文件的內容複製到ex命令中會很困難,因爲您需要轉義文本。作爲替代,我會建議創建一個功能,將文件的內容複製到剪貼板,然後打開一封新郵件並將內容粘貼到正文中。

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

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

我認爲:重繪是你想要的^大號 – pandubear

+0

我曾嘗試使用':redraw',遺憾的是它並沒有爲'^ L'同樣的效果。 –

+0

在這裏找到答案:http://vim.1045645.n5.nabble.com/redraw-vs-Ctrl-L-difference-td1200223.html 如果你弄亂了屏幕的方式,Vim不知道關於它, 如使用外部命令,則需要使用「:redraw!」。 雖然現在我重讀':h:redraw'它也在那裏。衛生署。 –

相關問題