Hack #171: 編集している関数名を表示する
Posted at 2010/09/02ツイート
数あるエディタの中には現在編集中の関数名をステータスバーに表示させたりできるものがあります。
Vimでもできないでしょうか。
解決
current-func-info.vimを使います。
インストールしたあとstatuslineを次のように設定しましょう。
let &statusline = '[%{cfi#get_func_name()}()]'
こうすると現在編集中の関数名が
[func()]
のように表示されます。
cfi#get_func_name()
は関数の外側にいる時は空文字を返すので
外側にいる時は「no function」と表示させたい場合は以下のようにします。
let &statusline = '%{cfi#get_func_name() == "" ? "no function" : "[" . cfi#get_func_name() . "()]"}'
これは少し面倒です。
cfi#format()
というヘルパー関数を使うとこのように書けます。
let &statusline = '%{cfi#format("[%s()]", "no function")}'
current-func-infoは現在C, Perl, Ruby, Python, PHP, Vimスクリプトに対応しています。
ちなみに
statuslineは
set statusline=...
という風にセットすることもできますが
let &statusline = '...'
としたほうが空白を含む文字列をセットする時にエスケープする必要がなく便利です。
set statusline=this\ is\ my\ statusline
let &statusline = 'this is my statusline'
また
set statusline=%!...
のようにすることもできます。(:help 'statusline'
参照)
もどる
blog comments powered by Disqus