Vim глобальная замена (строка)

опция "global" работает не так, как ожидалось (это, похоже, изменилось только недавно, но я пока не могу отследить причину разницы).

Дана строка:

aba

Я отдаю команду:

: s/a/ / g

Я ожидаю, что результат должен быть:

b

однако результирующая строка есть:

ба

Что я пропустила?

2 ответов


у вас, скорее всего, есть gdefault установить в .vimrc.

С :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?.


Если входные данные и команды ровно Как вы их даете, я не вижу причин для такого поведения.

Я ставлю на то, что второе " а " не то, что вы думаете. Например, это может быть кириллица "а", то есть" а " (U+0430). На моем экране они неразличимы.