2009-11-09 2 views
8

У меня есть следующие в моей .vimrc, чтобы выделить строки длиннее 80 символов:Ограничение соответствия в vim определенным типам файлов?

highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
match OverLength /\%81v.*/ 

Это работает очень хорошо. Однако проблема в том, что я бы предпочел, чтобы она работала только на определенные типы файлов. В принципе, любой язык программирования должен быть выделен, и такие вещи, как html, xml и txt файлы, не должны быть. Я уверен, что смогу сделать это легко с помощью autocmd, но я не уверен, что это лучший способ достичь этой цели. У кого-нибудь есть мнения?

ответ

6

Похоже, вы можете что-то вроде:

autocmd FileType html,xml highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
autocmd FileType html,xml match OverLength /\%81v.*/ 

похоже на работу для меня все равно :-)

+1

Арг, на самом деле это не совсем то, о чем вы просили. Хм, интересно, можно ли отменить FileType ... – Benj

+0

Да, как я уже сказал, я думаю, что делать это так, чтобы autocmds могли работать достаточно хорошо, вам просто нужно поменять, какие файлы здесь. Вместо html и xml он должен быть c, C++ и т. Д. Итак, если FileType можно было бы скрыть, это было бы еще лучше. –

+0

Хмм, я не думаю, что это так. Похоже, вам нужно будет фактически указать типы файлов, для которых вы хотите эту подсветку. – Benj

7

Вопрос с использованием матч для задачи, как это то, что он является локальным для активного а не на редактируемый буфер. Я бы попробовал что-то в следующих строках:

highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
fun! UpdateMatch() 
    if &ft !~ '^\%(html\|xml\)$' 
     match OverLength /\%81v.*/ 
    else 
     match NONE 
    endif 
endfun 
autocmd BufEnter,BufWinEnter * call UpdateMatch() 

В принципе, вы хотите запускать каждый раз, когда изменяется буфер в текущем окне. В этот момент вы оцениваете, какой тип файла имеет буфер, и настройте, должно ли оно быть активным или нет.

Если вы также хотите поддержать редактирование неназванного буфера, а затем установить его тип файла (либо с помощью сохранения, либо вручную с помощью & футов), FileType должен быть добавлен в список.

Смежные вопросы