2011-08-06 84 views
2

在vim中,我過濾了當前的單行,使用!通過Unix命令。要做到這一點我的.vimrc將vim中的filter命令輸入後,將光標移動到下一行

:map <Enter> !!mycommand<CR>:,+1<CR> 

<Enter>定義以下快捷這個帶我到低於當前的行,如果mycommand取代我的單輸入線整整一個輸出線。如果輸出有更多的行(命令執行前未知的行數),它仍然會將我帶到當前的行之下。 現在,我想知道如何總是能夠在mycommand的插入輸出下面的第一行。

修改後的快捷方式將允許我使用僅顯示輸出的<Enter>每行「執行」文本文件。 如果在沒有任何有關mycommand輸出的知識的情況下沒有辦法做到這一點,也許有人知道每個輸出行的第一個字符。

非常感謝!

回答

2

您可以使用特殊標記'['],標記上次更改(或抽出)文本的開始和結束。更改您的地圖:

:map <Enter> !!mycommand<CR>']+ 

請注意,我在的地方你的前命令的使用+。這將跳轉到下一行中的第一個非空白字符。如果這不是你想要的,你可以嘗試簡單地Ĵ或者,使用原來的地圖的一個較短的版本:

:map <Enter> !!mycommand<CR>']:+1<CR> 

你並不真正需要的逗號,使這個範圍。這個命令只是一個簡化的:#,其中#是要跳轉的行號。這裏您可以使用.表示「當前行」,然後:.+1移動到下一行。但是你可以省略點,這就是爲什麼:+1也一樣。

相關問題