目次
はじめに
色んな言語のコードを書いていると、
その言語の基礎的な文法を忘れてしまったりして、
おもむろに過去のコードをgrepしたり、
ネットで調べたりすることはよくあると思います。
また、良く使うコードの雛形を事前に作っておいて、
それをコピペすることも、生産性を向上させるのに重要かと思います。
上記のような、基礎的文法のコードや、よく使うコードの雛形のことを
snippetと言うらしいのですが、
下記のvimプラグインを使うと、
よく使うコードのスニペットを爆速で記入できるようになるので、
共有したいと思います。
インストール方法
vimでスニペット管理をする場合、
下記の3つのプラグインを利用すると便利です。
- neocomplcache: vimの補完プラグイン
- neosnippet: vimのスニペット管理プラグイン
- neosnippet-snippets: neosinippetのデフォルトスニペット定義ファイル
Neobundleを使って、プラグインを管理している場合は、
下記のコマンドをvimrcに追加すればインストールできます。
NeoBundle 'Shougo/neocomplcache' NeoBundle 'Shougo/neosnippet' NeoBundle 'Shougo/neosnippet-snippets'
:NeoBundleInstallを忘れないようにしましょう。
設定
neosnnippetのREADMEにある
デフォルトの設定をvimrcに書くと、
設定は完了です。
" Plugin key-mappings. imap <C-k> <Plug>(neosnippet_expand_or_jump) smap <C-k> <Plug>(neosnippet_expand_or_jump) xmap <C-k> <Plug>(neosnippet_expand_target) " SuperTab like snippets behavior. "imap <expr><TAB> " \ pumvisible() ? "\<C-n>" : " \ neosnippet#expandable_or_jumpable() ? " \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>" smap <expr><TAB> neosnippet#expandable_or_jumpable() ? \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>" " For conceal markers. if has('conceal') set conceallevel=2 concealcursor=niv endif "set snippet file dir let g:neosnippet#snippets_directory='~/.vim/bundle/neosnippet-snippets/snippets/,~/.vim/snippets'
最後の行はREADMEにはありませんが、
上記のようにsnippetのファイルのディレクトリを指定することで、
スニペットを利用することができます。
最初のディレクトリはneosnippe-snippetsをインストールすると、
自動で作成されるデフォルトのスニペットで、
二つ目のスニペットは自分独自のスニペット管理用のディレクトリです。
使い方
上記の設定を実施すれば、
あとはスニペットの名前をvimのインサートモードで入力すると、
下記のようにスニペットの一覧が表示されるので、
入力したいスニペットを選んでCtrl+kを押すと、
そのスニペットの中身が入力されます。
また、スニペットファイルに
${1}などと書いてある部分に関しては、
スニペット入力後に、更にCtrl+kを押すと、
その部分に移動し、cwで即座に変更することができます。
独自スニペットを設定する
デフォルトのスニペットファイルにも沢山
便利なスニペットが設定されていますが、
やはりvimユーザであれば独自のスニペットを作りたくなります。
neosnippetの場合、
独自スニペットを作りたい言語のファイルをvimで開いた状態で、
:NeoSnippetEdit
コマンドを入力すると、
自動でそのファイルタイプのスニペットファイルを作成してくれます。
(前述の設定を実施した場合、~/.vim/snippetsの下に
新しいスニペットファイルが生成されます)
あとは、
~/.vim/bundle/neosnippet-snippets/snippets/
の下のスニペットファイルをまねて独自スニペットを入力すれば、
そのスニペットを利用することができます。
下記で自分が作成したおすすめ独自スニペットを紹介します。
元のスニペットファイルは
下記でも公開しているので参照下さい。
Pythonおすすめ独自スニペット
自分が設定している
Python用おすすめ独自スニペットを紹介します。
1. 一番初めのpythonスクリプトの雛形を作るスニペット
新しいPythonファイルを作った時に、
このスニペットを使って、
一番はじめに必要なコードを一気に入力しています。
snippet initialscript abbr #! /usr/bin/python options head #! /usr/bin/python # -*- coding: utf-8 -*- u""" ${1} author Atsushi Sakai """ if __name__ == '__main__': ${0:pass}
C++おすすめ独自スニペット
続いて、自分が設定している
C++用おすすめ独自スニペットを紹介します。
1. ヘッダライブラリの雛形を作るスニペット
ヘッダファイルのみで構成される
クラスライブラリを作成する場合のスニペットです。
vim scriptを使って、
ファイル名をクラス名に自動変換しています。
snippet headerlib abbr * @file .h options head /** * @file `expand("%:r")`.h * @brief * @author Atsushi Sakai */ #pragma once /** * @brief */ class `expand("%:r")`{ public: `expand("%:r")`(){} //~~~~~~functions~~~~~~~ private: //~~~~~~Struct/Enum~~~~~~ //~~~~~~Members~~~~~ //~~~~~~functions~~~~~~~ };
最後に
一度設定したら、
非常に便利になりました。
名前は知っていたのですが、
なぜ今まで設定していなかったのか。。。
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。