VimのSassでのgfを改善する

Vimの標準ランタイムに入っているftplugin/sass.vimではincludeexprsuffixesaddが適切に設定されているので、多くの場合はそのままで快適にgfできる。けれど同じディレクトリにfooというディレクトリと_foo.scssというファイルがある場合、@import "foo";gfするとディレクトリの方が開かれてしまう。それをラッパー関数を書いて、_foo.scssを優先させようという試み。

Download: sass-goto-file.vim

インストールは~/.vimrcにコピペするだけ。以下のような順で開くべきファイルを探している。

  1. 普通にファイルを探す
  2. _を頭に付けてファイルを探す
  3. 普通にディレクトリを探す
  4. 見つからなかったらエラー

タブで開きたい場合は、最後にeditを使って開いているところをtabeditにする。

includeexprによるファイル探索の強化は、普通に探して見つからなかった場合にのみ発動するという仕様なので、先述のようなディレクトリが先に見つかってしまうケースには対応できない(と思う)。suffixesaddを考慮するfindfile()finddir()関数が組み込みであるので、ラッパー関数を書くのはそんなに難しくない。頭に_を付けるのもincludeexprと同じで良かった。