2012-06-22 6 views
1

Я использую :match, чтобы выделить проблемы с моим кодом, которые не соответствуют стилю. Следующие работы отлично подходит для первого окна я открыть в Vim:Vim новые вкладки не соответствуют текст

~/.vimrc:

hi ExtraWhitespace ctermbg=red guibg=red 
hi NoFunctionSpace ctermbg=red guibg=red 
match ExtraWhitespace /\s\+$\| \+\ze\t/ 
2match NoFunctionSpace /\S(/ 

Однако, когда я иду в :tabedit файл, или если открыть Vim с -p опции и несколько файлов , только первое окно подсвечивает совпадения. Я хочу, чтобы все мои открытые вкладки отображали совпадения.

ответ

3

Команды :match применимы только к текущему окну. Для того, чтобы автоматически применять их к каждому новому окну, зацепить их в WinEnter события:

autocmd WinEnter * match ExtraWhitespace /\s\+$\| \+\ze\t/ 
autocmd WinEnter * 2match NoFunctionSpace /\S(/ 

Вы все еще нужна оригинальная :match команды, тоже, потому что WinEnter событие не уволило за исходное окно.

+0

Я обнаружил, что если я использую BufEnter вместо WinEnter, я могу удалить исходный ': match'. Я также использую 'call matchadd' вместо': match', потому что тогда я могу назвать его столько раз, сколько хочу. Результат: 'autocmd BufEnter * call matchadd (" WhitespaceEOL ", '\ s \ + $')' – pzanoni

+0

'matchadd()' хорошо; поэтому вы можете оставить ': match' для интерактивного использования. Но 'BufEnter' ошибается; поскольку оба объекта привязаны к окну. Вы можете заметить, что он не работает при разделении текущего буфера на ': split'. –

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