元ネタはこれ。
たった一行で人生が変わった.vimrcでの設定とその意味 - Hail2u
さっそく上記の設定をして、HTML 内で gf をしたら JavaScript なファイルに飛んでおお!っとなった。
JavaScript が行けるのなら、Python の import で宣言しているのもいけるはず!と言う事でやってみた。
.vimrc
autocmd FileType python setlocal includeexpr=FormatPyImport(v:fname) | setlocal path+=;/ function! FormatPyImport(str) return substitute(substitute(substitute(a:str, '^from \|^import ', '', ''), 'import \a\+', '', ''), '\.', '\/', 'g') endfunction
foo.py
# -*- coding: utf-8 -*- class Foo(object): pass
bar.py
# -*- coding: utf-8 -*- def bar(): pass
sample.py
#!/usr/bin/env python # -*- coding: utf-8 -*- import bar from foo import Foo
sample.py 内で bar や foo の上で gf を実行すると、foo.py や bar.py に移動できた。
が、.vimrc に書いたやりかたが全く気にくわない。
substitute を 3 回も書いてる所がもやもやする。
もっとエレガントな方法があるはず…と思ったが、普通バッファセレクタ系のプラグイン使うよねーとか思ったのでこのまま。
という事で 2012 年一発目は Vim ネタでした。