2010-02-04 3 views
19

Есть ли простой способ сохранить часто используемый шаблон Regex, чтобы я мог повторно использовать его между разными файлами? Я просматриваю много файлов журналов и всегда нуждаюсь в создании слегка сложного регулярного выражения (это не ракетостроение, но это боль повторить), чтобы найти ошибки, поэтому было бы хорошо иметь способ вспомнить, что без необходимости сохранять его в тексте файл и вставлять его в параметры поиска каждый раз.Сохранить часто используемые шаблоны регулярных выражений в Vim?

ответ

2

Просто нажмите /, а затем стрелка вверх.

Или создайте команды для вызова поиска в регулярном выражении.

:command -nargs=0 Errors vimgrep "Error\s*regexp" % | cw 15 

, а затем просто

:Errors 
+0

Я пришел сюда, чтобы найти способ вспомнить предыдущие шаблоны поиска. Я иногда неоднократно просматриваю заданный шаблон, прерванный поиском другого шаблона, и необходимость повторного ввода исходного шаблона раздражает. Я не знал, что вы можете получить доступ к истории с помощью стрелок вверх и вниз. (Ctrl-P и Ctrl-N тоже работают.) Спасибо! –

2

Если вы начали вводить команду в Vim, в том числе поиска или замены, нажав «вверх» следует искать в истории для недавно используемых команд с тот же префикс.

3

Есть несколько способов:

  • Создать отображение, которое делает то, что вы хотите, и добавить его в свой .vimrc, например: map /foo /[long complicated regex]. Но будьте осторожны, что это затруднит поиск литеральной строки «foo», хотя это можно сделать с помощью экранов Ctrl-V. Другой способ - использовать другой префикс для пользовательских поисков регулярных выражений, например. map ::foo /[complicated regex].
  • Создайте функцию, которая ищет поиск регулярных выражений, и добавьте его в ваш .vimrc.
  • Некоторые комбинации из вышеперечисленных
14

Пут:

source ~/.regexlist.vim 

в ваш vimrc.

Проведите поиск. Решите, что вы, возможно, захотите снова использовать этот. Введите это буквально:

:sp ~/.regexlist.vim<CR> 
olet MyRegExName = '<C-R>/'<ESC> 
:w<CR> 
:so %<CR> 
:q<CR> 

Где <C-R> является CtrlR, <CR> является ENTER и <ESC> является ESC.

В следующий раз вы хотите использовать:

/<C-R>=MyRegExName<CR><CR> 

Ctrl-R является вашим другом! Ctrl-R, за которым следует/вытягивает последний поиск. Ctrl-R, за которым следует =, позволяет ввести выражение.

0

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

Чтобы добавить шаблон поиска, который вы только что использовали в файл, введите буквально:

o<CTRL-R>/ 

Если вам необходимо использовать шаблон из списка, перейдите к этой строке и введите буквально:

yyq/p<CR> 

Вы можете переключить вкладки/окна, а затем нажать n или N для поиска.

Смежные вопросы