2017-09-21 135 views
1

如果我從Vim內部運行shell命令,比如說:!ls,那麼在我退出Vim之後,它的輸出在shell中仍然可見。如何從Vim緩衝區寫入控制檯?

我想以類似的方式將選中的行從Vim中的當前緩衝區寫入到shell中。也就是說,在我退出Vim後,這些行應該在控制檯中可見。這個怎麼做?

要寫出線4-10例如,該命令沒有做到這一點::4,10w !tee

+0

爲什麼不使用':!cat%'? – dlmeetei

+0

@dlmeetei如果我只想從緩衝區寫入一些選定的行(比如第4行到第10行),該怎麼辦?也許我想在視覺上標記這些線條,然後寫出這些? –

+0

太好了,現在你已經更新了相應的問題。 – dlmeetei

回答

1

什麼簡單婷文件

:!cat % 

(如oposed到:%!cat這將只打印以緩衝)


只打印已選擇行:

:execute '!sed -n ' . line("'<") . ',' . line("'>") . 'p %' 

您可以爲

command! -range PrintSelected :execute '!sed -n ' . line("'<") . ',' . line("'>") . 'p %' 
+0

這個工程!如果我只想從緩衝區寫入一些選定的行(比如第4行到第10行),該怎麼辦?也許我想在視覺上標記這些線條,然後寫出這些? –

0

要建立在@ pacholik的答案定義一個命令(並回答評論您的擴展問題),以僅列出可視選擇(或其他任何您可以使用sed

:execute printf('!sed -n %d,%dp %%', line("'<"), line("'>"))