2012年2月21日火曜日

neocomplcache-snippets-completeいいよ

実は,neocomplcacheのsnippetを利用していなかったので,ふと思い立ちインストールして使ってみた.簡単な使い方が分かっただけでもこれ便利だわって感じ.

インストールと設定

neocomplcacheはインストールして設定済みの前提で,neobundle.vimでneocomplcache-snippets-completeをインストールする.
" .vimrc
NeoBundle 'Shougo/neocomplcache-snippets-complete'

" snippetの配置場所
g:neocomplcache_snippets_dir='~/.vim/snippets'

" キーマップ
imap <C-k> <plug>(neocomplcache_snippets_expand)
smap <C-k> <plug>(neocomplcache_snippets_expand)

Snippetの作成
g:neocomplcache_snippets_dirで設定した場所に,ファイルタイプ名.snipでsnippetを書いておくファイルを用意する.
とりあえず,C++のBoost.Test用のコードのsnippetを用意してみた.

snippet     batc
abbr        BOOST_AUTO_TEST_CASE
prev_word   '^'
    BOOST_AUTO_TEST_CASE(${1:TestName})
    {
        BOOST_FAIL("Fail");
    }

後は,C++のソースコードでbatcと入力して,を押せばsnippetが展開される.${数字}または${数字:デフォルト値?}で
プレースホルダを設定できて,で次へ次へと飛んでいけるみたい.

ただ,何故かVimを再起動しないと上手くsnippetを読み込んでくれなかった.

プレースホルダの同期
更にあるプレースホルダで設定した内容を他の部分に反映ということまでやってくれる.

snippet     c
abbr        C++ class
prev_word   '^'
    class ${1:name} {
    public:
        $1();
        $1($1 const &);
        ~$1();
    private:
    };

これで,クラス名を入力すると,自動的にコンストラクタ,コピーコンストラクタ、デストラクタが宣言される.
${数字}で入力した内容を$数字に反映できる.

これだけでも十分使えるよなぁ.後はsnippetを増やしていけば、本当に便利そう.何で今まで使ってなかったのか、と思うね.

ところで、このsnippetの文法というか構文というかは、neocomplcache-snippets-completeのドキュメントだけで完結しているのかな?
ざっと読んだ感じだとprev_wordって何か分からなかったんですが.

0 件のコメント:

コメントを投稿