vim regex не нужно \ убегать

17

В Vim есть возможность написать regexs в том же стиле , как Awk, например ,

/sp\{0,\}/
было бы

/sp{0,}/

MageProspero
источник

Ответы:

29

Если вы предшествуете вашему шаблону, шаблон \vбудет «волшебным», а символы, подобные {и [имеющие интерпретированное значение (и литералы должны быть экранированы).

Так /\vsp{1,}что нашел бы то, что хотел (я только что проверил).

Вы можете сделать это своего рода значением по умолчанию, переназначив /на /\vнего следующие строки в вашем vimrc:

nnoremap / /\v
vnoremap / /\v

Смотрите :help patternбольше.

Эдд Стил
источник
1

/sp\{0,}

Конечно, для {0,}вас было бы лучше использовать *: /sp*бы (так же, как и выше) найти 's', за которым следует ноль или более p. Обратите внимание, что ноль или больше всегда верно, поэтому нет никаких причин для этого в этом конкретном выражении.

Kevin
источник
Это была хорошая информация и очень полезная. Есть ли способ превратить экранирование специальных символов в vim?
MageProspero
Теперь я понимаю, что вы имеете в виду. Я серьезно сомневаюсь, что это почти наверняка потребовало бы другого парсера, разработанного параллельно, и я сомневаюсь, что это будет функция с достаточным спросом, чтобы оправдать такую ​​дополнительную реализацию и обслуживание.
Кевин
-1

Vim не имеет возможности эмулировать регулярные выражения в стиле awk, нет. Существует множество диалектов регулярных выражений, и, к сожалению, всегда есть эти небольшие диалектические различия, которые нужно отслеживать при переходе от одного инструмента к другому.

MetaEd
источник