【问题标题】:Enabling certain plugins and options for .h and .cpp files only in Vim仅在 Vim 中为 .h 和 .cpp 文件启用某些插件和选项
【发布时间】:2015-01-24 01:58:09
【问题描述】:

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

【问题讨论】:

    标签: c++ vim autocomplete file-type


    【解决方案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
    

    这个想法是全局关闭自动关闭 (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
    

    【讨论】:

    • 我想你们都误解了我的意思。我只希望 delimitMate 用于 .h 和 .cpp 文件,没有别的
    • 我需要类似“如果 FileType cpp == true 则继续;否则 b:loaded_delimitMate = 1”
    • 您可以这样做:autcmd FileType * let b:loaded_delimitMate = &ft != 'cpp'。但是,使用“默认关闭”选项 (delimitMate_offByDefault) 并将其仅用于 cpp 会在以后为您提供选项,因为您可以通过添加另一个 autcmd FileType ... 行轻松地为其他文件类型打开它。
    • 我已更改帖子以反映 cpp/.h 文件的开启。但是,正如我在帖子中指出的那样,这可能不是您要使用的设置。可能是b:delimitMate_autoclose,因为我无法判断。就我个人而言,我已经完全放弃了自动关闭插件,现在使用 surround.vim 来满足我的任何配对需求。
    【解决方案2】:

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

    所以根据你的需要,首先你应该在你的 vimrc 中禁用 delimitMate。然后,你可以在你的 vimrc 中加入这样的东西(在你禁用 delimitMate 之后):

    autocmd FileType cpp (insert command to disable delimitMate here)
    

    这样,vim 会默认禁用 delimitMate,但如果文件类型为 cpp,它会启用它。 (这包括头文件) 当然,更多信息可以通过:help :autocmdautocmd 命令获得

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多