2015-02-04 3 views
0

파일을 반복적으로 불러올 수 있습니다. (sp13-vim 배포판을 사용하고 있습니다.) Bundle/UnBundle 문을 사용하면 해당 파일의 일부분에 오류 메시지가 표시됩니다. 해당 부분이 이중 실행되지 않게하려면 어떻게해야합니까? https://github.com/LucHermitte/Rasende/blob/master/_vimrc_local.vim빔 - 이중 포함 가드

난 최신 templates : 나는? vim 스크립트에서 다음 다음 내가 가지고 사용하고

if guard_global_not_defined 
    define_guard_global 
    do stuff 
endif 

답변

3

정규 구조 번들 전역 범위됨에 따라 g: 프리픽스가 글로벌하게 가드

if !exists('g:didBundle') 
    let g:didBundle = 1 
    Bundle ... 
    ... 
endif 

이다. 다른 범위 (예 : 버퍼 로컬 항목의 경우 b:)에서 동일한 작업을 수행 할 수 있습니다.

1

local_vimrc 파일을 작성 어떻게입니다

의 종류 가드 포함 사용법은 조금 다르다. (프로젝트 이름, 소스를 찾을 수있는 곳, 구성 및 관련 빌드 디렉토리를 빌드하는 곳, 로컬 튜닝과 같이 로컬 설정 전에 설정해야하는 global definitions을 갖는 프로젝트를 지원할 예정이다). 확장하면

,이 같은 결과보기 (당신은 확실히 모든 필요하지 않습니다) :

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 : 나는 당신이 매우 $ HOME 디렉토리에서 local_vimrc을 가지고 아주 이상한 발견했다. 그것들은 프로젝트 트리의 루트에 있어야합니다. 또한 플러그인 관리자가로드하지 않고 플러그인 local-vimrc을로드해야합니다.

+0

감사합니다. TL : DR :'if! exists ("g : my_var") ... g : my_var = true ... endif' – PSkocik

+0

스크립트의 이름이 주어지면 변수는'b : my_var' 가능성이 높습니다. –