早上好,
当我用执行命令拉出一个块时,我有一个奇怪的问题。
我创建了一个带有几行测试的小文件
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。但我不知道如何以人类可读的格式找到存储的宏。
答案 0 :(得分:3)
问题是exe
的参数中包含空格字符,而vim
完全按字面解释这些空格字符。
:exe "normal! \<C-v> f; 4j y"
f;
后的空格导致光标向前移动,4j
后的空格导致光标再次向前移动,捕获两个额外的列,导致额外的空格字符和额外的;
将在猛拉中被捕获。
以下更正版本可以正常使用。
:exe "normal! \<C-v>f;4jy"
请注意,<C-v>
之后的空格可能很重要,但在此特定示例中无关紧要因为f;
将光标向右移动到第一个空格没有。