2014-11-25 3 views
0

У меня есть delimitMate, установленный для завершения скобок в Vim, но он работает для всех файлов, а не только файлов .h и .cpp. У DelimitMate есть возможность отключить себя в буфере, поэтому мне нужно добавить что-то в мой .vimrc, который говорит «отключить delimitMate в буфере всех файлов, кроме файлов .h и .cpp», хотя я понятия не имею, как это сделать.Включение определенных плагинов и опций для файлов .h и .cpp только в Vim

ответ

1

Считывание документации DelimitMate по адресу :h 'b:delimitMate_autoclose'. Добавьте следующую строку в ваш ~/.vimrc:

let g:delimitMate_autoclose = 0 
augroup my_delimitmate 
    autocmd! 
    autocmd FileType cpp let b:delimitMate_autoclose = 1 
augroup END 

Идея заключается в том, чтобы отключить AutoClose глобально (g:) и включите его снова для конкретных буферов (b:).

Вместо команд :autocmd и :augroup вы можете установить b:loaded_delimitMate внутри соответствующего файла ftplugin. Пример добавить следующее ~/.vim/after/ftplugin/cpp.vim:

let b:delimitMate_autoclose = 1 

Этот метод может быть предпочтительным, если вы хотите сохранить ваш файл ~/.vimrc чистыми или у вас уже есть много типов файлов конкретных команд, настройки или отображения.

Примечание: я не использую DelimitMate, поэтому я не тестировал ни одно из этих параметров.

Для получения дополнительной справки смотрите:

:h :aug 
:h :au 
:h FileType 
:h 'b:delimitMate_autoclose' 
:h delimitMateFileType 
:h ftplugin 
+0

Я думаю, что вы оба меня не поняли. Мне нужно только delimitMate для файлов .h и .cpp, ничего больше –

+0

Мне нужно что-то вроде «if FileType cpp == true then continue; else b: loaded_delimitMate = 1» –

+0

Вы можете сделать это: 'autcmd FileType * let b: loaded_delimitMate = & ft! = 'cpp''. Однако, используя параметр «отключить по умолчанию» ('delimitMate_offByDefault') и включите его, поскольку только cpp дает вам варианты позже по дороге, так как вы можете легко включить его для других типов файлов, добавив еще одну строку' autcmd FileType ... '. –

0

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

Итак, в соответствии с вашими потребностями сначала отключите delimitMate в своем vimrc. Затем, вы можете положить что-то подобное в вашем vimrc (после отключения delimitMate):

autocmd FileType cpp (insert command to disable delimitMate here) 

Таким образом, ВИМ отключит delimitMate по умолчанию, но это позволит ей, если fieltype является каст. (это включает в себя файлы заголовков) Конечно, более подробная информация доступна по команде autocmd делая :help :autocmd