0

这个问题其实和上一个问题有关有关。

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

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

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

something

运行命令后,文本变为:

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

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

0thing

运行自定义命令Test时,寄存器C不会更改。但是当我按预期从命令行运行上述命令时,它发生了变化。

4

1 回答 1

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()
于 2013-09-23T19:22:20.670 回答