我已经在Vim中为大括号完成安装了delimitMate,但它正在运行所有文件,而不仅仅是.h和.cpp文件。 DelimitMate有一个在缓冲区中禁用自身的选项,所以我需要在我的.vimrc中添加一些内容,“在除.h和.cpp文件之外的所有文件的缓冲区中禁用delimitMate”,尽管我不知道如何做到这一点。
答案 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
,而不是:augroup
和b: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
命令上获得更多信息