cafegale(LeafCage備忘録)

LeafCage備忘録(はてなダイアリー)と統一しました。

グローバル変数などでディレクトリを指定する時には末尾に「/」を付けない

Vim script plugin作成時において、ディレクトリをユーザに指定させる変数を用意する時に、

let g:foo_dir = '~/foo/bar/'

これは良くない。
なぜなら、mkdir(expand(g:foo_dir), 'p')をするとエラーになるからである。
mkdir()に通すなら、実行時に末尾の「/」を除去するか、または初めから

let g:foo_dir = '~/foo/bar'

のように、末尾の「/」抜きで定義されているべきである。

ほとんどのプラグインは後者であるので、それに合わせるべきである。
(私は今まで末尾に「/」付けないとそれがファイルなのかディレクトリなのか分からないだろ常考という考えでプラグインディレクトリ定義変数は末尾に「/」を付けていたが、改めることにする)

ただし、fnamemodify(dir, ':p')等で使われる「':p'」は、ディレクトリの場合は末尾に「/」を付けてくるので、対象がディレクトリであることを前提に、「/」なし流儀に合わせるなら、fnamemodify(dir, ':p:h')を使うべき。