vimでHTMLとかを編集するときに絶対パスのファイルを開く
imはファイル名のところでgfとタイプすると該当のファイルを開く機能があります。
例えば以下のようなソースでjs/jquery.jsの上でgfと押すとカレントファイルからの相対パスを探して、ファイルがあればファイルを開きます。
<script type="text/javascript" src="js/jquery.js"></script>
でもHTML書くときにドキュメントルートからの絶対パスで書くときもあるわけで、そのときはどのディレクトリがドキュメントルートになるかvimはわからないので開くことができません。
そこで以下の様な関数を定義して、ドキュメントルートをあらかじめ指定しておくことで絶対パスのファイルでも開けるようにしました。
" HTMLとかでドキュメントルートからの絶対パスのファイルを開く(gfみたいな感じで)
" 絶対パスじゃなかったら(/で始まってなかったら)gfと同じ
" ドキュメントルートのディレクトリは配列で複数指定できる。
let s:root_dirs = [$HOME.'/dev/site/localhost/test']
function! GotoAbsFile()
let filename = expand('<cfile>')
let filepath = filename
if (match(filename, '^/') != -1)
for dir in s:root_dirs
if match(expand("%:p:h"), dir) != -1 && isdirectory(dir) == 1
let filepath = dir . filename
break
endif
endfor
endif
if filereadable(filepath)
execute 'edit ' . filepath
else
echohl ErrorMsg
echo 'no such file ' . filename
echohl None
endif
endfunction
nnoremap gaf :<C-u>call GotoAbsFile()<CR>
カレントファイルのディレクトリを見て設定したディレクトリと合っているところから探すので複数ドキュメントルートを設定できるようにしてます。それと絶対パスじゃなかったら相対パスを探すので絶対パスと相対パスでコマンドを使い分ける必要もないです。
追記: 合わせて読みたいVimで"gf"をスラッシュで始まる相対URLに対応させる - Weblog - hail2u.net
- Prev Entry:proveで通らなかったテストだけ再実行する
- Next Entry:vimでフォントの大きさをトグルする