notebook

都内でWEB系エンジニアやってます。

smartchr,snippet,outlineを試してみた

今回はvimプラグインについて

多くの人が知っているだろうけど、僕はvimmerではないので、勉強しつつ、、、、、あくまでメモです

vimrcはつぎはぎだらけだけど何とか理解しようということで記録に残しておきます

まずはsmartchr

NeoBundle "smartchr"
"smartchr
inoremap <buffer> <expr> - smartchr#loop(' - ', '-', '->')
inoremap <buffer> <expr> , smartchr#loop(', ', ',')
inoremap <buffer> <expr> = smartchr#loop('= ', ' == ', '=>')
inoremap <buffer> <expr> % smartchr#loop('%', '[%  %]' )

NeoBundleを既に導入してればこれだけでOK

NeoBundleInstallでインストールしてファイルを開いてインサートモードで「-」「,」「=」「%」 を何度か入力すると順番に出力されます

内容は業務でPerlCatalystを触っているので最後のはTemplateToolKit用

3行目の例だと

一回目:「 - 」

二回目:「-」

三回目:「->」

ちなみに4回目はループするので「 - 」

いつもファットアローとかアローとか結構面倒だとは思っていたのですが、これあれば結構楽になるんじゃないかな

ただこの入力ペーストモードで入力した時でも適用されるよう

なので配列の並びの最初の要素はショートカット自体の文字列にしたほうが良さそう

お次はoutline

ファイルのアウトラインを別窓で表示してくれるプラグイン

関数一覧とかそういうのが見れます

NeoBundle 'h1mesuke/unite-outline'
"unite outline
let g:unite_split_rule = 'botright'
noremap <silent> <Leader>uo <ESC>:Unite  -no-quit -vertical -winwidth=40 outline<Return>

こちらもこれだけ

ショートカットを作りました。

「\uo」と入力するとアウトラインのウィンドウが出てきます、アウトラインを選んでエンターキーでその行に飛ぶことが出来ます。

オプションはそれぞれ

-no-quit

デフォルトは該当行にとんだ後アウトラインのウィンドウは消えてしまいますがこのオプションを設定することで消えずに残ります。

-vertical

ウィンドウの分割方法ですね、デフォルトは横分割なのでverticalで縦分割になります。

-winwidth=30

生成されるwindowのサイズ

これはピクセル数かな

最後にsnippet

NeoBundle 'Shougo/neosnippet'
let g:neocomplcache_snippets_dir = "~/.vim/snippets"
" for snippets
imap <expr><C-k> neocomplcache#sources#snippets_complete#expandable() ? "\<Plug>(neocomplcache_snippets_expand)" : "\<C-n>"
smap <C-k> <Plug>(neocomplcache_snippets_expand)

インサートモードでスニペットで定義した文字列を入力しCtrl+kを押すと定義された文章が展開されるというもの

殆どコピペだけど。。。。

.vim/snippets/以下にファイルタイプに合わせた***.snipファイルを用意

snippet test
    code
    code

インサートモードで「test」と入力しCtrl+kで

code
code

が展開されました

perlで関数名を展開するスニペットを登録してみました

snippet sub
  sub ${1:func} {
    my $self = shift;
    return;
  }  

${1:***} と入力することで展開後、「***」が選択された状態になっているので関数名が入力できるという状態になります。

便利!!!

${2:***}で複数も対応できるみたいだけどうまく行かなかったのでまた今度やってみる。。。

よく入力するものとか登録しとけば大分楽になりますね

どれも便利!今まで知らなかったなんて。。。。。

忙しさを言い訳にして全然勉強してなかったからもっとアンテナ張って色々探していかないとなーと思いつつ自己嫌悪。。。