我有一些專案需要不同的命令來運行、建置和測試,因此我在每個專案目錄中放置了一個 .vimrc 文件,該文件定義了一些 F 按鈕的映射。在 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
答案3
在 vim 版本 8.1^ 中,有一個名為的 autocmd-event目錄已更改您可以使用它來評估您的特定項目.vimrc
。以下是有關何時觸發此事件的更多詳細資訊:
DirChanged = Working directory has changed in response to the |:cd| or |:lcd| commands.
工作範例
我不是 vim 腳本的專家,但我建立了以下函數,一旦我進入專案資料夾.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
.