vim:当我用执行命令猛拉一个块时的奇怪问题

时间:2014-07-08 07:04:18

标签: vim exe yank

早上好,

当我用执行命令拉出一个块时,我有一个奇怪的问题。

我创建了一个带有几行测试的小文件

jkl; ;lkj
jkl; ;lkj
jkl; ;lkj
jkl; ;lkj
jkl; ;lkj
jkl; ;lkj
jkl; ;lkj
jkl; ;lkj
jkl; ;lkj
jkl; ;lkj

好吧,这不是杰作,但测试应该有效

当我使用视觉命令Ctrl+v f; 4j y时,5条线被拉出

jkl;
jkl;
jkl;
jkl;
jkl;

可期待的结果!

通常命令:

:exe "normal! \<C-v> f; 4j y"

应该这样做。但结果是:

jkl; ;
jkl; ;
jkl; ;
jkl; ;
jkl; ;

o_O为什么?

宏是workig normal。但我不知道如何以人类可读的格式找到存储的宏。

1 个答案:

答案 0 :(得分:3)

问题是exe的参数中包含空格字符,而vim完全按字面解释这些空格字符。

:exe "normal! \<C-v> f; 4j y"

f;后的空格导致光标向前移动,4j后的空格导致光标再次向前移动,捕获两个额外的列,导致额外的空格字符和额外的;将在猛拉中被捕获。

以下更正版本可以正常使用。

:exe "normal! \<C-v>f;4jy"

请注意,<C-v> 之后的空格可能很重要,但在此特定示例中无关紧要因为f;将光标向右移动到第一个空格没有。