如何在本地vimrc(.lvimrc)文件中设置clang格式选项?

如何在本地vimrc(.lvimrc)文件中设置clang格式选项?,vim,Vim,我使用的是特定于项目的vim设置。我的项目目录中有一个.lvimrc文件,具体设置如下所示,它可以正常工作 set tabstop=2 set shiftwidth=2 set softtabstop=2 但是,我无法覆盖clang格式设置,例如,当我运行:ClangFormat时,vim仍然使用我主文件夹中.vimrc文件中的设置 在.lvimrc文件中,我有以下的clang格式设置 let g:clang_format#style_options = { \ "Langua

我使用的是特定于项目的vim设置。我的项目目录中有一个.lvimrc文件,具体设置如下所示,它可以正常工作

set tabstop=2
set shiftwidth=2
set softtabstop=2
但是,我无法覆盖clang格式设置,例如,当我运行:ClangFormat时,vim仍然使用我主文件夹中.vimrc文件中的设置

在.lvimrc文件中,我有以下的clang格式设置

let g:clang_format#style_options = {
        \ "Language":                               "Cpp",
        \ "IndentWidth":                            2,
   }

本地VIMRC应使用
setlocal
let b:option_name=value
定义本地选项

不幸的是,并不是所有的插件都理解一些用户可以同时处理多个项目。在这种情况下,您需要您的本地vimrc插件在每次输入缓冲区时始终加载本地vimrc文件(即使它已经打开)。然后,您可以保护要(重新)设置的缓冲区本地定义

我不能为你正在使用的插件说话。每次我们
BufEnter
a缓冲区时,都会重新加载
vimrc\u local.vim
文件。因此,本地vimrc文件如下所示

" -- Global Overridden zone for project unaware plugins
let g:some_global_option_overwritten_every_time = "forced value"

" -- Buffer local zone for project-aware plugins
if exists('b:project_foo_bar_lvimrc_loaded') && b:project_foo_bar_lvimrc_loaded != 0
    finish
endif
let b:project_foo_bar_lvimrc_loaded = 1

setlocal whatever=value
let b:some_option_for_a_smart_plugin = "specific value"

" -- and we can also add a global zone for stuff that we can load once 
" like functions, but it'll be smarter to use autoload plugins

顺便说一句,在阅读插件文档时,它似乎也在听
BufEnter
,并且与我的插件不同,它似乎自动设置了防护。另一种可能性是,您的项目位于黑名单目录树中。你也得检查一下。

谢谢你的帮助,吕克。我的主文件夹中隐藏了一个.clang格式,它覆盖了.vimrc或.lvimrc设置。一旦我删除了它,.lvimrc-clang格式的设置对我很有用。