我使用本地vimrc进行项目特定的vim设置。我的项目目录中有.lvimrc文件,具有如下所示的特定设置,它可以工作。
set tabstop=2
set shiftwidth=2
set softtabstop=2
但是,我无法覆盖clang格式设置,例如,当我运行:ClangFormat时,vim仍然使用我主文件夹中.virc文件中的设置
我在.lvimrc文件中有以下clang格式设置。
let g:clang_format#style_options = {
"Language": "Cpp",
"IndentWidth": 2,
}
本地vimrcs应使用setlocal
和let b:option_name = value
定义本地选项。
不幸的是,并不是所有的插件都知道有些用户可以同时处理多个项目。在这种情况下,您需要本地vimrc插件在每次输入缓冲区时始终加载本地vimrc文件(即使它已经打开(。然后,您可以保护缓冲区的本地定义,以便再次(重新(设置。
我不能为你正在使用的插件说话。每次BufEnter
作为缓冲区时,Mine都会重新加载vimrc_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
,而且与我的插件不同,它似乎会自动设置保护。另一种可能性是,您的项目位于列入黑名单的目录树中。你还得检查一下。