首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vim --双夹杂保护装置

Vim --双夹杂保护装置
EN

Stack Overflow用户
提问于 2015-02-04 15:49:44
回答 2查看 123关注 0票数 0

Id希望能够重复地导入我的~/.vimrc.local文件(我使用的是sp13-vim发行版),但是当我有Bundle/UnBundle语句时,会在该文件的部分获得错误消息。我怎样才能防止那部分被加倍执行。

也就是说,如何用Vimscript编写以下内容?

代码语言:javascript
复制
if guard_global_not_defined
   define_guard_global
   do stuff
endif
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-04 16:42:52

规范结构是

代码语言:javascript
复制
if !exists('g:didBundle')
    let g:didBundle = 1
    Bundle ...
    ...
endif

由于捆绑包是全局范围的,因此g:前缀使其成为全局保护。您也可以对其他作用域进行同样的操作(例如,用于缓冲区-本地内容的b: )。

票数 4
EN

Stack Overflow用户

发布于 2015-02-04 16:23:24

我使用的local_vimrc文件包含以下类型的警卫:local.vim

我使用的最新模板有点不同(它们用于支持需要在本地设置之前设置全球定义的项目(比如项目名称、查找源代码的位置、构建配置及其相关的构建目录)和本地调优)。

展开时,结果如下所示(您当然不需要所有东西):

代码语言:javascript
复制
let s:k_version = 42
" Always loaded {{{1
" Buffer-local Definitions {{{1
" Avoid local reinclusion {{{2
if &cp || (exists("b:loaded_tests_lh_vimrc_local")
      \ && (b:loaded_tests_lh_vimrc_local >= s:k_version)
      \ && !exists('g:force_reload_tests_lh_vimrc_local'))
  finish
endif
let b:loaded_tests_lh_vimrc_local = s:k_version
let s:cpo_save=&cpo
set cpo&vim

" ======================[ Project config {{{2
if ! (exists("g:loaded_tests_lh_vimrc_local")
      \ && (g:loaded_tests_lh_vimrc_local >= s:k_version)
      \ && !exists('g:force_reload_tests_lh_vimrc_local'))
  source <sfile>:p:h/_vimrc_local_global_defs.vim
endif


" ======================[ Local settings {{{2
.... <- here go your local settings

"--------------------------------------------------------------------
" Global Definitions {{{1
" Avoid global reinclusion {{{2
if &cp ||  (exists("g:loaded_tests_lh_vimrc_local")
      \ && (g:loaded_tests_lh_vimrc_local >= s:k_version)
      \ && !exists('g:force_reload_tests_lh_vimrc_local'))
  finish
endif
let g:loaded_tests_lh_vimrc_local = s:k_version

" ======================[ Functions {{{2
.... <- here go some more global stuff like functions

" }}}1
"--------------------------------------------------------------------
let &cpo=s:cpo_save
"====================================================================
" vim600: set fdm=marker:

PS:我发现非常奇怪的是,在您的local_vimrc目录中有一个$HOME。他们注定是项目树的根部。而且,它们不应由插件管理器加载,而是由本地-vimrc插件加载。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28325592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档