Vim визуальный выбор и регулярное выражение - PullRequest
6 голосов
/ 19 декабря 2011

У меня проблема с визуальным выбором и выполнением замены регулярного выражения. Когда я выбираю какой-то текст, который не содержит всю строку, и нажимаю: вывести командную строку и сделать что-то вроде

:s/T/t/

Затем изменяется первое совпадение в строке (независимо от того, выбрано оно или нет). Так, например, у меня есть текст

Test Text here

и я визуально выбираю слово Текст , затем выполняю приведенную выше замену, в итоге получаю

test Text here

это не то, что я хочу.

Есть идеи, как добиться правильного результата?

Редактировать: Фактическая командная строка

'<,'>s/T/t/

по умолчанию Vim при нажатии: с визуальным выделением.

1 Ответ

10 голосов
/ 19 декабря 2011

Вы можете использовать \% V (см. http://vimdoc.sourceforge.net/htmldoc/pattern.html#//%V)

\%V   Match inside the Visual area.  When Visual mode has already been
    stopped match in the area that |gv| would reselect.
    This is a |/zero-width| match.  To make sure the whole pattern is
    inside the Visual area put it at the start and end of the pattern,
    e.g.:
        /\%Vfoo.*bar\%V
    Only works for the current buffer.

Итак:

:s/\%VT/t/

Если вы хотите заменить несколько попаданий, добавьте / g

:s/\%VT/t/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...