LoginSignup
4
1

More than 5 years have passed since last update.

neosnippetで使い捨てのsnippetを登録する

Posted at

私は昔はemacsを使っていて今はvimを使うことが多いのですが、emacsで重宝していた機能の一つに
yasnippetを使ったoneshot-snippetがありました。
これはsnippetの機能を使って使い捨てのsnippetを作成し、さっと使えるようにしたものです。
登録するほどの汎用性はないけど、ファイル編集の際に何回か同じパターンを入力しなきゃならないときが
結構あるので、この関数が好きで大分お世話になりました。

しかし、vimではneosnippetという同じようなスクリプトはあるものの、oneshot snippetのようなものは見つけられなかったので
Vim script勉強して何とか作らなきゃなぁ、と思っていたのですが、今日改めてneosnippetのコードを見ていたら
neosnippet_register_oneshot_snippetという関数を発見したのでメモしておきます。
試したところ、これを使えば使い捨てのsnippetを作れたので、使い方を残しておきます。

使い方

前提: neosnippetは既に使える状態であるとします。

.vimrcに以下のコードを追記します。(キーバインドは自分の好きなものに変えてください)

vmap <C-u>     <Plug>(neosnippet_register_oneshot_snippet)

後は、編集ファイル内でsnippetの元を作り、visual modeでsnippetを範囲選択した状態で
ctrl-uを押すことでneosnippet_register_oneshot_snippetが起動され、使い捨てのsnippetを登録できます。
登録の際にトリガーを聞かれるので、好きなトリガーを登録すれば、そのファイル内でのみ使えるsnippetを起動できるようになります。

output.gif

foo.pyファイル内で以下のようなsnippetを書きます。

self.${1} = $1

で、visual modeで上の行を選択しctrl-uを押すことでoneshot snippetを登録できます。

登録時に、snippet呼び出しのキーワードを指定します (デフォルトだと"oneshot"。ちょっと長い気がしますが。)。

後はinsert modeでoneshotと入力をしてctrl kなどでsnippetを起動すればいつも通りのsnippetが簡単に使えるようになります!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1