2011-04-07 93 views
6

“全局”选项不能按预期工作(这似乎只在最近才发生变化,但我无法找出差异的原因)。Vim全局替换(行)

鉴于行:

ABA

我发出命令:

:S/A // g^

我希望得到的结果是:

b

然而,得到的线条是:

BA

有什么我错过了?

+1

适合我。你的'〜/ .vimrc'中可以有一些有趣的东西吗? – SingleNegationElimination 2011-04-07 13:32:43

+1

是的,已设置gdefault。当我改变它时,我将不得不回到版本控制来提醒自己。我忘了这件事,感觉很愚蠢! o_O – yawmark 2011-04-08 02:46:25

回答

17

您很有可能在您的.vimrc中设置了gdefault

:help gdefault

When on, the ":substitute" flag 'g' is default on. This means that 
all matches in a line are substituted instead of one. When a 'g' flag 
is given to a ":substitute" command, this will toggle the substitution 
of all or one match. 

如果不设置这个在您的配置,你可以看到它是由发行:verbose set gdefault?设置。

+1

就是这样。感谢您的提醒!现在,如果我只记得为什么我首先设置gdefault ...:o) – yawmark 2011-04-08 02:44:20

2

如果输入和命令是刚好如你所说,我看不到这种行为的原因。

我的钱是在第二个“a”不是你想象的那样。例如,它可能是Cyrillic "a", i.e. "а" (U+0430)。在我的屏幕上,两者是无法区分的。

+0

感谢您的补充见解。但是,他们确实是一样的'a'。我输入了他们! :o) – yawmark 2011-04-08 02:45:11