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

Enabling certain plugins and options for .h and .cpp files only in Vim

本文关键字:插件 选项 启用 cpp Vim 中为 仅在 文件      更新时间:2023-10-16

我已经在 Vim 中安装了用于大括号完成的 delimitMate,但它适用于所有文件,而不仅仅是 .h 和 .cpp 文件。DelimitMate 有一个在缓冲区中禁用自身的选项,所以我需要在我的 .vimrc 中添加一些内容,上面写着"在除 .h 和 .cpp 文件之外的所有文件的缓冲区中禁用 delimitMate",尽管我不知道该怎么做。

: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

这个想法是全局关闭自动关闭(g:),然后为特定缓冲区(b:)重新打开它。

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

我认为您正在寻找的是自动命令。 每当某个事件发生时,自动命令都可以运行 vimscript 片段。您可以通过执行:help autocmd-events来查看所有可能事件的列表

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

autocmd FileType cpp (insert command to disable delimitMate here)

这样,vim 将默认禁用 delimitMate,但如果 fieltype 为 cpp,它将启用它。(这包括头文件)当然,可以通过执行:help :autocmd来获得有关autocmd命令的更多信息