Visual Line中的Vim正常编辑无法按预期工作?

geo*_*oot 2 vim

所以这是我第一次尝试在vim中进行视线编辑.我有几句话如下

cat
dog
Run Code Online (Sandbox Code Playgroud)

我想用括号(不使用surround.vim)围绕它们进行学习.我在视觉选择后使用的命令如下

:'<,'>norm 0i(<esc>$a)
Run Code Online (Sandbox Code Playgroud)

并且

:'<,'>norm 0i(<C-v><esc>$a)
Run Code Online (Sandbox Code Playgroud)

问题是vim似乎打印出来,我得到的输出是

(<esc>$a)cat
(<esc>$a)dog
Run Code Online (Sandbox Code Playgroud)

任何暗示我可能出错的地方都将不胜感激.

另外值得注意的是,我运行vim使用vim -u NONE这样的vimrc文件不会被加载.

sid*_*yll 6

:normal命令不解析特殊字符.正如您可能已经猜到的那样,<esc>字面意思是插入五个不同的字符.

你将需要:execute用这些特殊字符的转义包装它:

:exe "'<,'>norm 0i(\<esc>$a)"
Run Code Online (Sandbox Code Playgroud)

执行此操作的其他方法(使用完整缓冲区范围%):

  1. :exe "%norm I(\eA)" - 编写esc字符的另一种方法
  2. :%norm I(^[A)- 在哪里^[是ctrl-v然后是esc,插入一个不需要解析的文字esc字符.
  3. :%s/.*/(&)