Подсветка синтаксической ошибки Vim

Я новичок в vim, и я использовал чью-то конфигурацию vim (я клонировал его каталог .vim в свой домашний каталог).

Кажется, в его конфигурации есть ошибка, связанная с проверкой синтаксиса. Как вы видете:

введите здесь описание изображения

Скобка не должна быть выделена, потому что там нет ошибки.

Итак, мой вопрос в том, какую часть конфигурации vim я должен проверить на наличие этой проблемы.

Спасибо

ОБНОВЛЕНИЕ: 0

Я думаю, что нашел строку, которая вызывает эту ошибку.

У меня есть файл extra.vim в ~/.vim/syntax/c/extra.vim, файл выглядит так:

"========================================================
" Highlight All Function
"========================================================
syn match   cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
syn match   cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1

"========================================================
" Highlight All Math Operator
"========================================================
" C math operators
syn match       cMathOperator     display "[-+\*/%=]"
"" C pointer operators
syn match       cPointerOperator  display "->\|\."
"" C logical   operators - boolean results
syn match       cLogicalOperator  display "[!<>]=\="
syn match       cLogicalOperator  display "=="
"" C bit operators
syn match       cBinaryOperator   display "\(&\||\|\^\|<<\|>>\)=\="
syn match       cBinaryOperator   display "\~"
syn match       cBinaryOperatorError display "\~="
"" More C logical operators - highlight in preference to binary
syn match       cLogicalOperator  display "&&\|||"
syn match       cLogicalOperatorError display "\(&&\|||\)="

" Math Operator
hi def link cMathOperator            cOperator
hi def link cPointerOperator         cOperator
hi def link cLogicalOperator         cOperator
hi def link cBinaryOperator          cOperator
hi def link cBinaryOperatorError     cOperator
hi def link cLogicalOperator         cOperator
hi def link cLogicalOperatorError    cOperator


hi def link cFunction Function
hi def link cOperator Operator

" hi Operator guifg=LightGoldenrod

Когда я комментирую строку ниже:

syn match       cMathOperator     display "[-+\*/%=]"

Проблема исчезла.

Итак, как я могу это исправить и почему?


vim
person Alan    schedule 24.08.2015    source источник
comment
отредактируйте .vimrc, если вы используете *nix.   -  person luoluo    schedule 24.08.2015


Ответы (2)


Vim, вероятно, не проверил весь файл. Это своего рода оптимизация, которая иногда дает сбой.

Обычно прокрутка файла назад и вперед на пару экранов решает проблему.

Вы также можете принудительно выполнить анализ всего файла:

:syn sync fromstart

Для получения дополнительной информации см. Vim FAQ 24.8: подсветка синтаксиса Vim не работает. Когда я редактирую файл, в некоторых частях файла синтаксис не выделяется или синтаксис выделяется неправильно.

person mMontu    schedule 24.08.2015
comment
Спасибо @mMontu, но проблема не в этом. Так как мой файл короткий. - person Alan; 25.08.2015
comment
@ Алан, насколько короткий твой файл? Он полностью отображается на рисунке в вашем вопросе? - person mMontu; 25.08.2015
comment
В этом файле всего 158 строк, я думаю, что эта проблема вызвана какой-то ошибкой в ​​моих собственных файлах синтаксиса. Моя конфигурация vim загружена на github.com/archersmind/vim - person Alan; 26.08.2015
comment
Я только что нашел строку, которая вызывает эту ошибку. И мой вопрос обновлен, не могли бы вы помочь мне ответить на мой вопрос? - person Alan; 26.08.2015

ОК, эта ошибка исправлена ​​​​с помощью:

-"syn match       cMathOperator     display "[-+\*/%=]"
+syn match cMathOperator display "[-+/*/%=]"
person Alan    schedule 26.08.2015