実行、ビルド、テストに異なるコマンドを必要とするプロジェクトがいくつかあるため、各プロジェクト ディレクトリに、いくつかの F ボタンへのマッピングを定義する .vimrc ファイルを配置しました。vim ヘルプ ファイルには次のように書かれています。
'exrc' 'ex' ブール値 (デフォルトはオフ) グローバル {Vi にはない} 現在の.vimrc、.exrc、.gvimrcの読み込みを有効にします。 ディレクトリ。
そのオプションを有効にしましたが、:cd
ディレクトリに入ると .vimrc ファイルが読み込まれません。 と書き込む:so .\.vimrc
と正常に読み込まれます。なぜ自動的に読み込まれないのでしょうか?
私は Windows 用の gVim 7.3 x64 を使用しています。
答え1
_vimrc
'exrc'が設定されている場合、現在のディレクトリで、.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イベントがあります。方向変更プロジェクト固有の評価に使用できます.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
。