tpope/vim-projectionist

Alternate filesが便利

airblade/vim-rooter

プロジェクトルートに移動したり、プロジェクトルートのパスを返したりする関数がある。

vital.vimのpath2project_directory

引数に与えたパスに対するプロジェクトルートのパスを返す。
こんなふうに使う。

let project_dir = vital#of('vital').import('Prelude').path2project_directory(<path>)

プロジェクトルートの判定は自分で設定できない。

finddir()

fnamemodify(finddir('.git', '.;'), ':h:p')

でカレントファイルのgitのルートディレクトリを返す。