背景
競技プログラミングで遊んでると、使い回しが効くようなコードはスニペット機能を使って素早く挿入したくなった。
Vimプラグインはあまり使ったことがないため、インストール周りで少し手こずったのでメモ化。
スニペットとは?
コード・スニペット。簡単に言うと定型構文を素早く挿入できる機能。
Vimでもプラグインを導入すればスニペット機能を利用できる。
この辺りを参照すると雰囲気がつかめると思う。
VimでPHPの補完にスニペットを使ったら捗った件 - Qiita
導入手順
プラグイン管理ツールの導入
Shougo/neobundle.vim
Neobundleは、Vimプラグインを管理するためのプラグイン。
gitから落としてくる。
mkdir -p ~/.vim/bundle
git clone git@github.com:Shougo/neobundle.vim.git ~/.vim/bundle/neobundle.vim
スニペットプラグインの導入
Shougo/neosnippet.vim
NeoSnippetは、Vimでスニペット機能が使えるようになるプラグイン。
NeoSnippetをインストール
NeoBundleを利用して、NeoSnippetを利用できるようにする。
まず、.vimrc
に以下を追記。
" bundleで管理するディレクトリを指定setruntimepath+=~/.vim/bundle/neobundle.vim/call neobundle#begin(expand('~/.vim/bundle/'))
NeoBundleFetch 'Shougo/neobundle.vim'
NeoBundle 'Shougo/neocomplcache'
NeoBundle 'Shougo/neosnippet'
NeoBundle 'Shougo/neosnippet-snippets'call neobundle#end()filetype plugin indent on
その後にvimを起動し、以下を実行。
:NeoBundleInstall
そうすると、必要なプラグインがインストールされる。
この時点で、スニペットが利用できるようになった。
スニペットを試してみる
スニペットは拡張子に合わせて設定されるので、利用したい拡張子のファイルを開いて試してみれば良い。
例えば、中身の無いhoge.js
というファイルを作る。hoge.js
を開いて、「if」まで入力した状態がこれ。
ここで「^K」(Control + K) を押すと、こうなる。
独自スニペットの設定
前述の設定までで、拡張子毎に基本的なスニペットは利用できるようになった。
ここから更に、自分でカスタマイズしたスニペットを利用する為の設定を行う。
ディレクトリ設定
まず、独自スニペット用ディレクトリを指定する。.vimrc
に以下を追記。
letg:neosnippet#snippets_directory='~/.vim/bundle/neosnippet-snippets/snippets/'
そして、独自スニペットを適用したい拡張子のファイルをvimで開き、以下を実行する。
:NeoSnippetEdit
そうすると、その拡張子に対する独自スニペットファイルが自動生成され、編集できるようになる。
(ちなみにディレクトリの設定をしないと、「snippet directory not found」といって怒られる。)
例えばJavascript用のスニペットを作成したかったら、hoge.js
をvimで開いてから:NeoSnippetEdit
を実行すると良い。
スニペットの構文
各拡張子に対応するスニペットの定義ファイルが下記ディレクトリに入っているので、ここからコピペしてくるのが一番分かりやすいと思う。~/.vim/bundle/neosnippet-snippets/neosnippets/
以下のページも参考になるかも。
neosnippet.vim を活用しよう - C++でゲームプログラミング
参考
VimでPHPの補完にスニペットを使ったら捗った件 - Qiita
http://qiita.com/tekkoc/items/8897cdf378305c4e547d
Shougo/neobundle.vim
https://github.com/Shougo/neobundle.vim
Shougo/neosnippet.vim
https://github.com/Shougo/neosnippet.vim
NeoBundleによるVimプラグイン管理とおすすめプラグイン - Catcher in the tech
http://catcher-in-the-tech.net/1063/
Vimのsnippetについてあまり知らなかったので設定してみたら便利過ぎてつらい - 僕のYak Shavingは終わらない
http://kazuph.hateblo.jp/entry/2012/11/28/105633
Vimのneosnippetで自分用snippetファイルを追加したい - 300億円欲しい
http://gg-hogehoge.hatenablog.com/entry/2014/04/05/230043
neosnippet.vim を活用しよう - C++でゲームプログラミング
http://d.hatena.ne.jp/osyo-manga/20131016/1381934670