仅在Vim中为.h和.cpp文件启用某些插件和选项

时间:2014-11-25 21:44:21

标签: c++ vim autocomplete file-type

我已经在Vim中为大括号完成安装了delimitMate,但它正在运行所有文件,而不仅仅是.h和.cpp文件。 DelimitMate有一个在缓冲区中禁用自身的选项,所以我需要在我的.vimrc中添加一些内容,“在除.h和.cpp文件之外的所有文件的缓冲区中禁用delimitMate”,尽管我不知道如何做到这一点。

2 个答案:

答案 0 :(得分:1)

阅读:h 'b:delimitMate_autoclose'处的DelimitMate文档。将以下内容添加到您的~/.vimrc

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

我们的想法是全局关闭autoclose(g:)并将其重新打开以获取特定缓冲区(b:)。

您可以在相应的ftplugin文件中设置:autocmd,而不是:augroupb:loaded_delimitMate命令。示例将以下内容添加到~/.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

答案 1 :(得分:0)

我认为您正在寻找的是自动命令。每当某个事件发生时,自动命令就可以运行vimscript。您可以通过:help autocmd-events

查看所有可能事件的列表

因此,根据您的需要,首先应该在vimrc中禁用delimitMate。然后,你可以在你的vimrc中放置这样的东西(在你禁用delimitMate之后):

autocmd FileType cpp (insert command to disable delimitMate here)

这样,vim默认会禁用delimitMate,但是如果fieltype是cpp,它将启用它。 (包括头文件) 当然,通过autocmd

可以在:help :autocmd命令上获得更多信息