2015-10-18 2 views
2

Я экспериментирую с опцией скрытия синтаксиса Vim, надеясь внести свой вклад в vim-lambdify. Тем не менее, я вижу (на мой взгляд) неожиданное поведение при попытке передать регулярное выражение на syntax match.Соответствие синтаксису vim regex не работает как ожидалось

При задании следующих в моем .vimrc

execute "syntax match myOperator /foo\(bar\)\@=/ conceal cchar=*" 
execute "hi link myOperator mySpecialOperator" 
execute "hi! link Conceal mySpecialOperator" 
setlocal conceallevel=1 
setlocal concealcursor=c 

Я не вижу foo скрыты при открытии следующего файла:

foo 
foob 
foobar 

Я пробовал много перестановок этого регулярное выражение: побег ничего/все, обертывая его одиночными/двойными кавычками и т. д. безрезультатно.

Я пропустил что-то очевидное? Я не понимаю, как должны работать синтаксис/совпадение/сокрытие?

+0

Почему вы используете exec? Удаление exec все равно сделало бы команду работать ... – FDinoff

+0

В первой строке использование выполнения с двойными кавычками неверно, потому что обратная косая черта интерпретируется, вы должны использовать одинарные кавычки или помещать несколько двойных обратных косых черт или удалять 'execute' – yolenoyer

+0

К сожалению, [плагин] (https://github.com/calebsmith/vim-lambdify/blob/master/autoload/vimlambdify.vim#L27) Я заинтересован в расширении использования синтаксического соответствия 'execute '..." ' , – pdoherty926

ответ

0

Этот вопрос был на Reddit по rgvim:

обратный слэш в первой строке выполнить нужно экранировать.

/foo\\(bar\\)\\@=/ 
Смежные вопросы