Определите следующее в .vimrc или выполните в командной строке vim:
syn match ndbMethods "[^. \t\n\r]\@<=[_a-z][_a-zA-Z0-9]*(\@="
hi ndbMethods guibg=#222222
Просмотрите результаты с помощью вызова метода в стиле C в активном буфере:
foo();
Вы увидите, что начальный символ имени метода не совпадает.
Намерение состоит в том, чтобы шаблон просмотра назад заставлял начало строки, литерал .
или пробел предшествовать первому символу любого сопоставленного метода.
Как ни странно, использование отрицательного прогноза (\@<!
), похоже, работает!
Будет ли кто-нибудь достаточно любезен, чтобы объяснить, почему этот взгляд назад неверен?
[^\n]
будет соответствовать любому символу , включая новую строку.[\n]
внутри коллекций всегда добавляет новую строку к совпадению, независимо от того, есть ли у вас^
в начале или нет. Во избежание путаницы всегда используйте вариант\_[]
, который эквивалентен[\n]
. - person ZyX   schedule 27.08.2012