Ответ 1
:g/[ ^\t]if\|[ ^\t]fi/print
BIGFATOROPERATOR - \|
. Он назывался оператор чередования. В PCRE это просто |
. Он сбежал в Vim/ex, потому что |
используется в других местах для общих команд (или что-то - FIXME).
У меня есть некоторые несоответствующие операторы if и fi в script. Я хотел бы разделить все, кроме как если бы и фишки. Просто я вижу структуру. Почему я так плохо работал с таким мощным редактором? Мне нужен оператор BIGFATOR для регулярного выражения или какого-то прозрения, которое ускользнуло меня... Мне не важно, чтобы на регулярных выражениях отображалось только что-то практическое, работающее в VIM7.2.
: g/[^\t], если [/print
распечатает ifs
: g/[^\t] fi/print
распечатает fi
Что я хочу сделать или условия
: g/[^\t] fi BIGFATOROPERATOR [^\t] fi/print
У меня был успех, делающий следующее... но я чувствую, что работаю ТРУДЫМ!
: вызов TripMatch ('[^\t] *, если [', 'else', 'fi [\ t $]')
функция! TripMatch (str1, str2, str3)
пусть var1 = a: str1
пусть var2 = a: str2
пусть var3 = a: str3
пусть max = line ( "$" )
пусть n = 1
для n в диапазоне (1, max)
let currentline = getline (n)
if currentline =~? var1 echo n "1:" currentline else if currentline =~? var2 echo n "2:" currentline else if currentline =~? var3 echo n "3:" currentline else let foo = "do nothing" endif endif endif
ENDFOR
EndFunction
:g/[ ^\t]if\|[ ^\t]fi/print
BIGFATOROPERATOR - \|
. Он назывался оператор чередования. В PCRE это просто |
. Он сбежал в Vim/ex, потому что |
используется в других местах для общих команд (или что-то - FIXME).
Если вы хотите удалить все остальные строки, кроме тех, у которых есть if, else или fi, вы можете использовать этот
%v/\(if\|else\|fi\)/d
'v' является противоположностью 'g' и удаляет любые строки, которые не соответствуют регулярному выражению.
Чтобы добавить к тому, что сказал страг, символ трубы '|' я убежден, что Vim предполагает, что вы будете искать буквенные символы чаще, чем вам понадобится обширный RegExps.
Вы можете заставить Vim использовать менее escaped RegExps, установив "магический" уровень на "очень", когда в ex-режиме:
Использование "\ v" означает, что в шаблоне после всех ASCII-символов, кроме '0' - '9', 'a' - 'z', 'A' - 'Z' и '_' имеют особое значение. "очень магия"
Смотрите: he/magic для получения дополнительной информации
Не рекомендуется, чтобы в вашем vimrc установленный уровень магии по умолчанию был "очень" (как в файле справки).
:h /\|
Если вы пропустили \|, вы, вероятно, пропустили много других pattern "токенов".