Персонажи классов в диапазонах - vim - PullRequest
9 голосов
/ 27 июля 2011

Учитывая, что у меня есть следующая строка:

This is a test {{ string.string.string }}.

И попробуйте выполнить следующую подстановку:

%s/{{ [\w\.]\+ }}/substitute/g

Она не будет работать с ошибкой: шаблон не найден.

Когда я использую:

%s/{{ [a-zA-Z\.]\+ }}/substitute/g

Это работает.

Есть ли способ использовать мета-символьные классы в диапазонах в VIM?

1 Ответ

7 голосов
/ 27 июля 2011

Вы можете использовать:

  • Подвыражение без захвата, см. :help E53 (вы также можете использовать подвыражение захвата, \(\), но накладные расходы назахват бесполезен)

    %s/{{ \%(\w\|\.\)\+ }}/substitute/g
    
  • Последовательность необязательно совпадающих атомов - \%[], см. :help E70

    %s/{{ \%[\w\.]\+ }}/substitute/g
    
...