Edited at

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 にはない}


議論

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