在 neovim 0.4.3-3 的正常模式下,此命令:
:put=range(1,4)
将放置从 1 到 4 的编号列表
但是当我只想将数字放在空白行中时,如下所示:
:g/^$/norm :put=range(1,14)
它没有按预期工作 - 只突出显示空行,但 put 不起作用,为什么?
答案1
该:normal
命令仅执行完整的命令,并且您的:put
Ex 命令在末尾缺少一个“Enter”来实际执行它。
{commands}
应该是一个完整的命令。如果{commands}
未完成命令,则最后一个命令将被中止,就像键入<Esc>
或一样。<C-C>
:
还必须完成命令。
您可以通过在命令末尾添加额外的“Enter”字符来解决此问题,您可以使用以下命令输入:
Ctrl+ V,Enter
它将^M
在 Vim 中显示为 a:
:g/^$/norm :put=range(1,14)^M
(有一些方法可以避免在命令中输入文字“Enter”。例如,该:execute
命令经常用于此目的。)
但在这种情况下,有一个更简单的解决方案,那就是完全放弃:normal
并直接:g
运行:put
!
:g/^$/put=range(1,14)
该:g
命令将为它匹配的每一行运行一个 Ex 命令,并且:put
是一个 Ex 命令,因此您可以在这里省略中间人。
请注意,此命令的作用是在缓冲区中的每个空白行后面附加 14 个新编号的行。不确定这是否真的是您的意图。