在vim我过滤,说当前的单行,使用!!通过Unix命令。为此,我在.vimrc中定义了以下快捷方式
:map <Enter> !!mycommand<CR>:,+1<CR>
如果<Enter>
替换我的单个输入行只是一条输出行,按mycommand
这会将我带到当前行以下的行。如果输出有更多行(在命令执行之前未知行数),它仍然会将我带到当前行以下的行。
现在,我想知道如何始终到达mycommand
的插入输出下面的第一行。
修改后的快捷方式允许我逐行“执行”文本文件,只使用<Enter>
每次显示输出。
如果没有事先知道mycommand
的输出就无法做到这一点,也许有人知道每个输出行的第一个字符。
非常感谢!
答案 0 :(得分:2)
您可以使用特殊标记'[
和']
,它们标记上次更改(或拉动)文本的开头和结尾。将地图更改为:
:map <Enter> !!mycommand<CR>']+
请注意,我使用 + 代替您的ex命令。这将跳转到下一行中的第一个非空白字符。如果这不是您想要的,您可以尝试简单地 j ,或者使用原始地图的较短版本:
:map <Enter> !!mycommand<CR>']:+1<CR>
你真的不需要逗号,要使它成为一个范围。此命令只是一个简化的:#
,其中#
是要跳转的行号。在这里,您可以使用.
表示“当前行”,然后:.+1
移动到下一行。但是你可以省略点,这就是为什么:+1
做同样的事情。