为什么以下命令不使用未命名寄存器中首次注册的内容(如果此内容是数字?)
execute "normal! cc".(@"+1)."\<esc>"
答案 0 :(得分:0)
只要默认寄存器只包含 一个数字,这就有效。前导空格将导致字符串被评估为0
。
:echo "1" + 1
2
:echo " 1" + 1
1
您可以通过将字符串显式转换为数字来避免这种情况:
:echo str2nr(" 1") + 1
2
注意:如果您不关心'autoindent'
的{{1}}行为,您也可以使用较低级cc
:
setline()
答案 1 :(得分:0)
字符串连接实际上是在执行之前完成的,这似乎是合乎逻辑的。以下代码具有我期望的行为。
normal! cc
execute "normal! ".(@"+1)."\<esc>"