为什么setreg不能按预期在Vim的自定义命令中工作?

时间:2013-09-23 18:01:41

标签: vim

这个问题实际上与我以前的question有关。

我在_vimrc中有以下自定义命令:

command! Test %s/some/\=setreg('C', submatch(0), 'l')/g

我在以下文本中运行此自定义命令Test

something

运行命令后,文本变为:

=setreg('C', submatch(0), 'l')thing

但是如果我从Vim的命令行运行相同的命令%s/some/\=setreg('C', submatch(0), 'l')/g,我得到:

0thing

运行自定义命令Test时,寄存器C不会更改。但是当我从命令行运行上述命令时它会被改变,这是预期的。

1 个答案:

答案 0 :(得分:1)

我不知道到底是什么骚扰你,就像上一次一样,你的两个命令对我来说都很合适。

通常这与某些非默认设置有关,通常是'cpoptions'。尝试使用:set cpo&vim -N -u NONE之后。另外,检查反斜杠是否在:command Test的命令输出中。

最后(如果找不到根本原因),可以使用中间函数解决它:

function! Test()
    %s/some/\=setreg('C', submatch(0), 'l')/g
endfunction
command! Test call Test()