Подтвердить что ты не робот

Выполнение поиска/замены без регулярного выражения в vim

Когда вы выполняете поиск/замену в vim, мне почти никогда не нужно использовать регулярное выражение, так что боль постоянно ускользает от всего, есть ли способ сделать его по умолчанию не использовать регулярное выражение или есть альтернативная команда для выполнения этого

В качестве примера, если я хочу заменить < на &lt;, я бы просто хотел набрать s/</&lt;/g вместо s/\</\&lt\;/g

4b9b3361

Ответ 1

Проблема в основном вызвана путаницей о роли & в заменяющей строке. Строка замены не является reg-ex, хотя у нее есть специальные символы, например &. Вы можете прочитать о роли & в строке замены здесь: :h sub-replace-special.

Я подозреваю, что основная проблема для OP не обязательно набирает дополнительные обратные косые черты, а скорее запоминает, когда нужна обратная косая черта, а когда нет. Одним из способов решения проблемы может стать использование "замещающих выражений" при неуверенности. (См. :h sub-replace-expression.) Это требует ввода строки `\ = 'в заменяющей строке, но для некоторых людей она может дать вам более естественный контроль над тем, что заменяется, поскольку размещение строкового литерала в одинарных кавычках даст вам замену, которую вы хотите, Например, этот заменитель делает то, что хочет OP:

:s/</\='&lt;'/g

Ответ 3

Используйте эту опцию:

set nomagic

См. :help /magic

Ответ 4

Если вы хотите искать буквально, вы можете использовать атом regex \V. Это почти делает то, что вы хотите, за исключением того, что вам также нужно избегать обратной косой черты. Вы можете определить свою собственную команду поиска, которая будет искать буквально. Что-то вроде этого:

 :com! -nargs=1 Search :let @/='\V'.escape(<q-args>, '\/')| normal! n

И затем используйте: Поиск /foobar/baz

Для Substitute вы можете после команды: Search просто использовать

:%s//replace/g

так как тогда Vim неявно забирает последний элемент поиска и использует для замены.

(Просто хочу дать вам несколько идей)

Ответ 5

Включили ли вы магию?

:set magic

Ответ 6

Попробуйте отредактировать Найти и заменить в строке меню.