部分內容參考自[Daily VIM: Piping Buffers],完整的VIM doc請參考[change]
想使用外部指令來處理VIM內容,關鍵在於"!"這個filter command,舉例來說現在讀取VIM內的文字並交由外部程式sort處,可以這樣做:
其中%是表文本內容(?)(應該是檔名吧? 有誰知道這個從vim doc那來的),最後的輸出結果也將目前文本內容全部取代。再舉一個例子,這個例子是用cat來加行號:
有時我們是要由外部命令讀取資料進來,而且不想將外部指令的結果取代掉所有文本內容,這時我們可以用":r"這個命令。舉例來說,將ls輸出到游標所在處:
再回到剛才cat的例子,我們若想插入文本內容,卻又不想取代掉現在文本內容,我們可以這樣做:
exec是叫VIM做這個命令,命令內容為後面那一串,其中expand("%")表示目前編輯的檔案檔名,所以這個命令在未儲存檔案時不能用的喔~~
想使用外部指令來處理VIM內容,關鍵在於"!"這個filter command,舉例來說現在讀取VIM內的文字並交由外部程式sort處,可以這樣做:
:% ! sort
其中%是表文本內容(?)(應該是檔名吧? 有誰知道這個從vim doc那來的),最後的輸出結果也將目前文本內容全部取代。再舉一個例子,這個例子是用cat來加行號:
:% ! cat -n
有時我們是要由外部命令讀取資料進來,而且不想將外部指令的結果取代掉所有文本內容,這時我們可以用":r"這個命令。舉例來說,將ls輸出到游標所在處:
:r ! ls
再回到剛才cat的例子,我們若想插入文本內容,卻又不想取代掉現在文本內容,我們可以這樣做:
:exec ":r ! cat -n ".expand("%")
exec是叫VIM做這個命令,命令內容為後面那一串,其中expand("%")表示目前編輯的檔案檔名,所以這個命令在未儲存檔案時不能用的喔~~
1 comment:
我在help裡找到"%"擴展檔名的用法
:h cmdline-special
:h expand()
Post a Comment