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


17

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

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

/sp{0,}/

Ответы:


29

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

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

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

nnoremap / /\v
vnoremap / /\v

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


1

/sp\{0,}

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


Это была хорошая информация и очень полезная. Есть ли способ превратить экранирование специальных символов в vim?
MageProspero

Теперь я понимаю, что вы имеете в виду. Я серьезно сомневаюсь, что это почти наверняка потребовало бы другого парсера, разработанного параллельно, и я сомневаюсь, что это будет функция с достаточным спросом, чтобы оправдать такую ​​дополнительную реализацию и обслуживание.
Кевин

-1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.