Vim

Vimで、バッファをを移動した時に自動的にプロジェクトルートをカレントディレクトリにする

More than 5 years have passed since last update.

問題

バッファをあちこちいったりきたりしていると、カレントディレクトリ(や、カレントディレクトリを基点にしたプロジェクト)単位でなんかやるみたいなプラグインを使ってる時にこまる。

解決

プロジェクト単位で自動的にlcdすると便利そう。というわけで、以下のような設定をほどこす(Uniteユーザ限定だけど…)。

  • unite#util#path2project_directory(expand('%'))でプロジェクトのルートを取得
  • lcdで移動
function! ChangeCurrentDirectoryToProjectRoot()
    let root = unite#util#path2project_directory(expand('%'))
    execute 'lcd' root
endfunction
:au BufEnter * :call ChangeCurrentDirectoryToProjectRoot()

lcdってのは、cdとは違って、カレントウィンドウのみ変更するそうです。

:lc[d][!] {path}    コマンド |:cd| と似ているが、カレントウィンドウのカレ
            ントディレクトリのみを変更する。別のウィンドウのカレン
            トディレクトリに変化はない。 {Vi にはない}

議論

自動的にやるとなんか困ることあるのかな。