unite.vim の action の設定方法いろいろ

この記事は Vim Advent Calendar 2012 310日目の記事になります。


さて、前回の Vim Advent Calendar では unite.vim の action について書いたのですが、今回はその action の設定方法なんかを簡単に紹介してみたいと思います。

[デフォルトの action を設定する]

kind に対してデフォルトの action を設定します。
その kind が設定されている候補を実行()した時にその action が呼ばれます。

" ディレクトリは vimfiler で開く
call unite#custom#default_action('directory' , 'vimfiler')

" ファイルは tabdrop で開く
call unite#custom#default_action('file' , 'tabdrop')

" 次のように , で複数の kind に対して設定することもできる
call unite#custom#default_action('file,buffer' , 'tabdrop')


ここで注意するのは『source』ではなくて『kind』に対して設定するという事です。
設定した kind のすべてのデフォルト action に反映されます。

[source に対してデフォルトの action を設定する]

上記は kind に対して設定しましたが、次のように書くことで source ごとに対してデフォルトの action を設定する事ができます。
特定の source の場合のみデフォルトの action を設定したい時に有効です。

" source/{name}/{kind} のように source と kind を指定する事ができる
" source-bookmark の kind-directory は tabvimfiler を使用する
call unite#custom#default_action("source/bookmark/directory", "tabvimfiler")

" kind に * を設定すればその source のすべての kind に対して設定される
" source-file のデフォルトの action を tabdrop にする
call unite#custom#default_action("source/file/*", "tabdrop")

[action に対して別の action を設定する]

unite.vim では特定の action を呼ぶキーマッピングがいくつか設定されいます。
例えば、t キーを押すと "tabopen" action が呼び出されます。
この時に "tabopen" に対して別の action を設定することで t キーの挙動を自分好みに設定する事ができます。

" kind-file の tabopen を tabdrop にする
call unite#custom#alias('file', 'tabopen', 'tabdrop')

" kind-file の tabopen を tabvimfiler にする
call unite#custom#alias('directory', 'tabopen', 'tabvimfiler')


また、unite#custom#default_action() と同様に source を指定して設定することもできます。

" source-file_mru の tabopen を split にする
call unite#custom#alias('source/file_mru/file', 'tabopen', 'split')


このように自分にあった挙動を設定すると更に unite.vim の使い勝手がよくなると思います。