Я хотел бы регулярное выражение VIM для поиска пар слов по выбору. Они могут быть разделены другими словами, но оба они должны быть на одной линии. Например, если я хотел, чтобы соответствовать открыть и закрыть, то они должны соответствовать:gvim регулярное выражение соответствует пару слов
open foo close
open close
foo
и они не должны совпадать:
open foo
open
foo close
close
Я пытался использовать предпросмотр и назад ', чтобы соответствовать слова, но Я просто не могу найти правильную комбинацию.
Я знаю, как это сделать для одиночных символов, но слова полностью потеряли меня.
Вот попытка:
s/\(\(open\)\@=.*\(close\)\@=\)*
За одно и то же, но с «а» и «с» вместо «открытым» и «закрыть» Я могу это сделать:
s/^\(a[^ac]*c\|[^ac]\)*$
Это бы выбрать все эти строки (и пустую строку):
acabcacabbbbcbbb
ac
abc
b
но не выберет
acbbc
ab
bc
a
c
Это функциональность, которую я ищу, но со словами.
Любая помощь была бы принята с благодарностью.
Спасибо! Nachum
Редактировать: Я работаю над сценарием отступа, и это помогло бы. Вместо этого я закончил поиск и преобразование слов в отдельные буквы. Затем я использовал методы, с которыми я уже знаком, чтобы соответствовать одиночным символам. По крайней мере, он сокращает код после завершения первого преобразования.
Вы должны приложить все усилия, даже если они не работают отлично. Это поможет людям понять, что вы пытаетесь сделать, и сообщить вам, что вы делаете неправильно ... Также люди любят видеть доказательства того, что вы попытались решить проблему самостоятельно. – smerny
Обновлено моими собственными попытками. Спасибо что подметил это. – nachum