В зависимости от конкретной строки, которую вы ищете, префикс \V
, вероятно, поможет.
См :help \V
:
after: \v \m \M \V matches ~
'magic' 'nomagic'
$ $ $ \$ matches end-of-line
. . \. \. matches any character
* * \* \* any number of the previous atom
() \(\) \(\) \(\) grouping into an atom
| \| \| \| separating alternatives
\a \a \a \a alphabetic character
\\ \\ \\ \\ literal backslash
\. \. . . literal dot
\{ { { { literal '{'
a a a a literal 'a'
Поэтому, если у меня есть строка hello.*$world
, я могу использовать команду /\V.*$
, чтобы найти только .*$
- единственная часть строки , которая должна быть экранирована, - это еще одна обратная косая черта, но вы все еще можете выполнять группировку и т. д., экранируя специальный символ.
Еще одна команда, которую вы можете использовать, чтобы «избежать» прямой косой черты:
:g #\V((N/N)/(N/N))/N#
Команда :g
является глобальным поиском, отмечая, что:
:[range]g[lobal]/{pattern}/[cmd]
Execute the Ex command [cmd] (default ":p") on the
lines within [range] where {pattern} matches.
Instead of the '/' which surrounds the {pattern}, you can use any other
single byte character, but not an alphanumeric character, '\', '"' or '|'.
This is useful if you want to include a '/' in the search pattern or
replacement string.
Итак, где я использовал #
, вы могли бы использовать ?
, @
или любой другой символ, отвечающий вышеуказанному условию. Уловка этой команды :g
в том, что она ожидает команду в конце, поэтому, если у вас нет завершающего пробела после последнего символа, она не будет выполнять поиск, как вы ожидаете. И снова, даже если вы используете \V
, вам все равно придется избегать обратной косой черты.
Если это все еще не обрезает его для вас, в этом сообщении Nabble есть предложение, которое принимает буквенную строку со встроенными обратными слешами и другими специальными символами Vim и утверждает, что ищет для этого без проблем; но это требует создания функции Vim, которая может быть или не быть приемлемой в вашей среде.