Я хочу використовувати регулярні вирази perl у командному рядку vim. Наприклад, щоб виписати великі літери у поточному рядку, ви можете ввести:
:s/(\w+)/\u$1/g
Я хочу використовувати регулярні вирази perl у командному рядку vim. Наприклад, щоб виписати великі літери у поточному рядку, ви можете ввести:
:s/(\w+)/\u$1/g
Відповіді:
Ви можете фільтрувати будь-який рядок або діапазон рядків за допомогою зовнішньої команди в vim, використовуючи !. Наприклад, ви можете:
:.!perl -pe "s/(\w+)/\u\1/g"
який буде фільтрувати поточний рядок через цю команду perl. (Тут :
потрібно перейти в режим командного рядка, і .
наступне значення означає поточний рядок; ви також можете вказати діапазон рядків або %
для всього файлу тощо)
Якщо ви хочете використовувати вбудований vim в шаблонах заміни, найближчим до вас підійде параметр "дуже магічний" vim, \ v, наприклад:
:s/\v(\w+)/\u\1/g
див. :help pattern
та :help substitute
для отримання детальної інформації. Я не думаю, що "дуже магія" зовсім ідентична шаблонам Perl, але дуже близька. У будь-якому випадку, ви завжди можете використовувати perl, якщо вам це зручніше, як вище.
(
обробляється спеціально, поки {
це не так: "всі символи ASCII, крім" 0 "-" 9 "," a "-" z "," A "-" Z "і '_' мають особливе значення. " Спасибі!
Ні, ви не можете використовувати регулярні вирази Perl таким чином. Про допомогу в вивченні еквівалентів Vim для компонентів регулярного вираження Perl див
:help perl-patterns
Однак ви можете використовувати Perl як зовнішній фільтр, як пояснено frabjous. Ви також можете виконати команди Perl у Vim, використовуючи інтерфейс Perl, якщо ваш Vim був складений з цією +perl
функцією. Побачити
:help if_perl.txt
:help perl-patterns
вирішив одне, що я раніше ненавидів про vim
Ви також можете використовувати:
/\v"your regex"
замість:
/"your regex"
nnoremap / /\v
і vnoremap / /\v
у свій .vimrc, щоб при введенні /
він просто працював.
Ось рішення з http://vim.wikia.com/wiki/Perl_compatible_regular_expressions
:perldo s/(\w+)/\u$1/g
(Перевірте :ver
, +perl
чи +perl/dyn
це складено.)
Використовуйте плагін eregex.vim . Це дуже корисно, і у мене з цим проблем не було.