118
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

Vimプラグイン初心者がスニペット機能を導入して、独自スニペットを追加できるまでの流れ

背景

競技プログラミングで遊んでると、使い回しが効くようなコードはスニペット機能を使って素早く挿入したくなった。
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に以下を追記。

.vimrc
" bundleで管理するディレクトリを指定
set runtimepath+=~/.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」まで入力した状態がこれ。
スクリーンショット 2015-02-10 16.22.07.png

ここで「^K」(Control + K) を押すと、こうなる。
スクリーンショット 2015-02-10 16.22.47.png

独自スニペットの設定

前述の設定までで、拡張子毎に基本的なスニペットは利用できるようになった。
ここから更に、自分でカスタマイズしたスニペットを利用する為の設定を行う。

ディレクトリ設定

まず、独自スニペット用ディレクトリを指定する。
.vimrcに以下を追記。

.vimrc
let g: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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
118
Help us understand the problem. What are the problem?