入れててよかったVimプラギンとか設定とか

この記事はCPS Lab Advent Calendar 2015 - Adventarの14日目の記事になります。後輩向けに書きました。

Elixirのこと書こうと思ってたんですが、まだまだひよっこなのでまた後日。
Vimも自分でプラギン書かないひよっこですが、始めたばかりの人の役に立てそうなレベルのこと書きます。

入れててよかったVimプラギン

今回はとりあえず入れてみたけど助かってるなぁと感じたVimプラグイン(設定)を紹介しようと思います。
プラグイン入れることが全てではないですが、先人がベンリなものを作ってくれてるのでありがたく使わせてもらいます。
NeoBundle使ってるvimrcをそのまま切り貼りしてるのでたまに出てきますが、適宜読み替えて貰えれば幸いです。

lexima.vim

github.com

ソースコード書いてると良く""()で文字列を囲みますがその入力を助けてくれるプラグインです。 IDEっぽい感じになります。
自動で""{}を入力してくれるのでほぼ閉じ忘れがおきません。 文字で表現してもわかりづらいと思うので、githubgifを見てください。

" lexima.vim {{{
if neobundle#is_sourced("lexima.vim")
  let g:lexima_no_default_rules = 1
  call lexima#set_default_rules()
endif
" }}}

incsearch.vim

github.com

マッチするものが全てハイライトされるインクリメント検索ができます。 それがとても良いのです。

f:id:norikakip:20151214225206p:plain f:id:norikakip:20151214225250p:plain

" incsearch {{{
map / <Plug>(incsearch-forward)
map ? <Plug>(incsearch-backward)
map g/ <plug>(incsearch-stay)
" }}}

eskk.vim

github.com

Terminal環境によってはIMEが使えなくなってしまって困ることがあります。
そんな時に活躍します。skkの入力方式は癖がありますが、IMEなしで日本語が入力できるのはとてもありがたいです。
よく環境をお引越しする人にオススメです。

"eskk設定 {{{
let g:eskk#directory = '~/.eskk'
let g:eskk#dictionary = {
      \     'path' : "~/.skk-jisyo",
      \     'sorted' : 0,
      \     'encoding' : 'utf-8',
      \}
let g:eskk#large_dictionary = {
      \     'path' : "/usr/share/skk/SKK-JISYO.L",
      \     'sorted' : 1,
      \     'encoding' : 'euc-jp',
      \}
let g:eskk#enable_completion = 1
" }}}

プラギン以外

知ってると少しうれしい機能です

keywordprg

Vimではカーソル下のキーワードを調べる仕組みが用意されています。
デフォルトではK(Shift + k)でカーソル下のキーワードをmanを使ってしらべますが、 言語によってはドキュメントを検索するツールを指定したいです。その時にkeywordprgを使います。

autocmd FileType ruby call s:ruby_filetype_settings()
function! s:ruby_filetype_settings()
  setlocal tabstop=2 shiftround shiftwidth=2
  setlocal completeopt-=preview
  setlocal keywordprg=ri
endfunction

これでRubyのコードを書くときにKを押せばriでドキュメントを参照してくれるようになります。

vimのコマンド実行について

Vimではコマンドが一意に定まるとき、最後まで入力せずともコマンドが実行できます。タブで補完する必要もありません。

どういうことかと言うと、実行できるコマンドにExciteTranslateExploreがあったとして、

:Explore

これを

:Exp

に省略することが出来ます

自分でコマンドを書く際にこれを意識すると、とても入力効率が上がると思います。
下のscriptは現在開いているbufferのディレクトリにcdするコマンドです。

command! CDCurrent call s:CDCurrent()
function! s:CDCurrent()
  if isdirectory(expand('%:h'))
    cd %:h
  endif
endfunction

:CDで始まるコマンドは僕の入れているプラグインと被っていないので、これだけでbufferのディレクトリに移動できます。
なるべく被らないコマンドを定義して指を休めてください。

Vimはautocmdとmapだけですごく楽ができるので、慣れたらガシガシいじってください。

その他ポインタ

VimのCTRL-X補完について - daisuzu's notes

vim-jp » Vimのユーザーと開発者を結ぶコミュニティサイト

Vim Advent Calendar 2015 - Qiita

時間切れだぁ(・ัω・ั)