在vim中输入filter命令后将光标移动到下一行

时间:2011-08-06 01:18:31

标签: linux vim

在vim我过滤,说当前的单行,使用!!通过Unix命令。为此,我在.vimrc中定义了以下快捷方式

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

如果<Enter>替换我的单个输入行只是一条输出行,按mycommand这会将我带到当前行以下的行。如果输出有更多行(在命令执行之前未知行数),它仍然会将我带到当前行以下的行。 现在,我想知道如何始终到达mycommand的插入输出下面的第一行。

修改后的快捷方式允许我逐行“执行”文本文件,只使用<Enter>每次显示输出。 如果没有事先知道mycommand的输出就无法做到这一点,也许有人知道每个输出行的第一个字符。

非常感谢!

1 个答案:

答案 0 :(得分:2)

您可以使用特殊标记'['],它们标记上次更改(或拉动)文本的开头和结尾。将地图更改为:

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

请注意,我使用 + 代替您的ex命令。这将跳转到下一行中的第一个非空白字符。如果这不是您想要的,您可以尝试简单地 j ,或者使用原始地图的较短版本:

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

你真的不需要逗号,要使它成为一个范围。此命令只是一个简化的:#,其中#是要跳转的行号。在这里,您可以使用.表示“当前行”,然后:.+1移动到下一行。但是你可以省略点,这就是为什么:+1做同样的事情。