" スクリプトのベースディレクトリ (クッキーの保存に使われるだけ) if !exists('g:hatena_base_dir') let g:hatena_base_dir = substitute(expand('<sfile>:p:h'), '[/\\]plugin$', '', '') endif
expand(':p:h')
<sfile> コマンド ":source" の実行時、取り込まれたファイルのファイル 名に置き換えられる。 関数の実行時、"関数 {関数名}" に置き換えられる。関数呼び出 しのネスト (入れ子状態) はこのように表される: "関数 {関数名1}..{関数名2}"。
expand({expr} [, {flag}]) ワイルドカードと{expr}内の特殊なキーワードを展開する。戻り値は 文字列。 変換子: :p フルパス名を展開 :h ヘッド(ディレクトリ)
plugin ファイル読み込みディレクトリを取得する
expand('<sfile>') → /Users/basyura/.vim/plugin/hatena/plugin/hatena.vim expand('<sfile>:p') → /Users/basyura/.vim/plugin/hatena/plugin/hatena.vim expand('<sfile>:p:h') → /Users/basyura/.vim/plugin/hatena/plugin
plugin ファイル読み込みディレクトリパスに置換処理を行って plugin のルートディレクトリを取得する。cookie ファイルの保存位置に使用する。
substitute(expand('<sfile>:p:h'), '[/\\]plugin$', '', '') → /Users/basyura/.vim/plugin/hatena