3

早上好,

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

我创建了一个包含几行测试的小文件

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

好的,这不是杰作,但测试应该可以

当我使用可视命令时,Ctrl+v f; 4j y5 行被拉出

jkl;
jkl;
jkl;
jkl;
jkl;

可预期的结果!

通常命令:

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

应该做同样的事情。但结果是:

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

o_O 为什么?

宏是正常工作的。但我不知道如何以人类可读的格式找到存储的宏。

4

1 回答 1

3

问题是 to 的参数中exe空格字符,并且vim从字面上解释这些空格字符。

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

后面的空格f;使光标向前移动一次,而后面的空格4j使光标再次向前移动,捕获两个额外的列,这导致额外的空格字符和额外;的被捕获。

以下更正版本可以正常工作。

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

请注意,后面的空格<C-v> 可能很重要,但在此特定示例中并不重要,这仅仅是因为f;光标比第一个空格更靠右。

于 2014-07-08T08:15:08.617 回答