Vimの設定(ディレクトリを開いたファイルと同じ場所へ移動)

次にディレクトリの移動。
たいていの場合、ファイルを開いたあとに次にファイルが同じディレクトリにあることが多い。

1つのファイルを開いたらそのファイルの置いてあるディレクトリに変更するように設定。
参考はまたしても名無しのvim使いのサイト。
ここにあった、CD.vimの中身の解説をそのままvimrcに記載。
この内容を参考にして、コメントで指摘してもらった内容にする。

""AutoChangeDirectory
au BufEnter * execute 'lcd ' fnameescape(expand('%:p:h'))

これを記載して、ファイルを開いたらそのファイルが保存されているディレクトリに移動できるようになった。
現在のディレクトリの確認は
:pwd
でできる。
問題点はディレクトリにスペースがある場合にはエラーになってしまうこと。expandで拡張したパス名をダブルクォーテーションで囲んだりすることはできないんだろうか。とりあえずヘルプでは見つけられなかった。

<追記>

au BufEnter * execute ":lcd " . expand("%:p:h")
またもやid:thincaさんに指摘してもらう。先達にコメントもらえるというのは本当にありがたいです。
上の書き方ではパス名にスペース名があるとだめだったので、それを回避する方法を指摘してもらった。

au BufEnter * execute 'lcd ' fnameescape(expand('%:p:h'))

まずは「fnameescape」を利用する方法。これだと、パス名にスペース「 」があるとエスケープ処理して「\ 」、パス名を渡すことになるのでエラーにならずに実行することができる。
/users/homaju/hoge fuga/foo.txt
を開いたときに、ディレクトリ名
/users/homaju/hoge fuga
と返し、エラーとなるのが
/users/homaju/hoge\ fuga
となるから、エラーにならない。

au BufEnter * lcd `=expand('%:p:h')`

この方法だと``で囲んだ中に''を入れることで、空白があってもパスが区切られたと判断されないようになってる。
expand('%:p:h')が /users/homaju/hoge fugaとディレクトリ名に展開するけど、
lcd `/users/homaju/hoge fuga`
と空白も含めて``に囲まれるからエラーにならない。
でも``と''の区別が面倒なので、今回は
au BufEnter * execute 'lcd ' fnameescape(expand('%:p:h'))
を使用する。