2014-10-29 3 views
0

Я пытаюсь сделать пользовательскую подсветку и хочу использовать matchadd вместо match. Вот пример из моей .vimrc:Vim: пользовательские цвета с matchadd не работают с autocmd

autocmd BufWinEnter * call MyColors() 
function! MyColors() 
    let &nuw=len(line('$'))+2    " Nicer line numbers 
    call matchadd('CursorLineNr', '\%81v') " Highlight 81th symbol 
    call matchadd('ErrorMsg', '.*xx.*')  " xx - red line 
    call matchadd('DiffDelete', '.*vv.*') " vv - green line 
    call matchadd('Search', '.*??.*')  " ?? - yellow line 
endfunction 

функция вызывается, но не выделить не появляются. Если я вызываю это из команды, как через :call MyColors, он выделяет все, как должен, просто не работает автоматически.

Что я делаю неправильно?

Update

Угадайте, что - это работает, когда я запускаю vim, а затем открыть файл с помощью :e ~/.vimrc, не тогда, когда я открываю его из командной строки vim ~/.vimrc. Go figure ...

+0

Хм, у меня работает ... –

+0

'BufWinEnter' не серебряная пуля это, кажется, использовать' autocmd BufEnter, WinEnter * вызов MyColors() '. – romainl

+0

Поскольку совпадения являются локально локальными, 'WinEnter, VimEnter' должен быть наиболее уместным (последний, поскольку первый не запускается для первого). –

ответ

0

Благодарим за предложение VimEnter. После экспериментов немного я нашел эту комбинацию, чтобы быть наиболее пуленепробиваемыми:

autocmd VimEnter,BufEnter,WinEnter * call MyColors()