실행, 빌드 및 테스트를 위해 서로 다른 명령이 필요한 몇 가지 프로젝트가 있으므로 일부 F 버튼에 대한 매핑을 정의하는 각 프로젝트 디렉터리에 .vimrc 파일을 넣었습니다. vim 도움말 파일에는 다음과 같이 나와 있습니다.
'exrc' 'ex' 부울(기본값은 꺼짐) 글로벌 {Vi에서는 아님} 현재 버전에서 .vimrc, .exrc 및 .gvimrc 읽기를 활성화합니다. 예배 규칙서.
따라서 해당 옵션을 활성화했지만 :cd
디렉터리에 들어가면 .vimrc 파일이 로드되지 않습니다. 쓰다보면 :so .\.vimrc
로딩이 잘 되더라구요. 왜 자동으로 로드되지 않습니까?
저는 Windows용 gVim 7.3 x64를 사용하고 있습니다.
답변1
'exrc'가 설정된 경우 현재 디렉터리에서 이름이 지정된 파일을 검색 합니다 _vimrc
..vimrc
_exrc
시작 시. :cd
새 디렉토리로 이동할 때마다 이 작업이 수행되는 것은 아닙니다 . 보다
:help .vimrc
답변2
제 생각에는 이것이 가장 좋은 변형입니다.
if getcwd() =~ '^\(/my/safe/dir1/\|/my/safe/dir2/\)'
set secure exrc
endif
출처:http://vim.wikia.com/wiki/Open_vimrc_file 그러나 고정된 구문
답변3
vim 버전 8.1^에는 autocmd-event라는 이름이 있습니다.디렉터리가 변경됨특정 프로젝트를 평가하는 데 사용할 수 있습니다 .vimrc
. 이 이벤트가 트리거되는 시기에 대한 자세한 내용은 다음과 같습니다.
DirChanged = Working directory has changed in response to the |:cd| or |:lcd| commands.
실제 사례
저는 vim-script의 전문가는 아니지만 프로젝트 폴더에 들어가면 프로젝트별 .vimrc
파일을 로드하는 다음 함수를 만들었습니다. cd
이 함수를 기본 ~/.vimrc
파일에 붙여 넣으세요.
if !exists("*LoadProjectVimrc")
function! LoadProjectVimrc()
let vimrcFile = findfile(".vimrc", ".;")
if !empty(vimrcFile)
execute ":so" l:vimrcFile
echom l:vimrcFile
endif
endfunction
endif
autocmd DirChanged * :call LoadProjectVimrc()
답변4
참고로 제가 한 일은 각 프로젝트에 대한 바로가기를 만들고 -S session.vim
.