南極の図書館

ペンギンが寝ていた…。

そろそろしっかりvimを使う。quickrun,uniteの導入。

引き続き、vimRubyのコーディングをするためにプラグインを入れていく。今回が「しっかりvim」の最終エントリ。


前回(そろそろしっかりvimを使う。vimでRubyのコーディングをするために - holyppの日記)は、「補完」と「リファレンス」の環境を整えた。
これでコードを書くには問題が無くなったが、書いているうちにもう少し機能が欲しくなる。
次に欲しくなるのは「高速な実行環境」それに「高機能なファイラー」だ。
そこまで環境が整えば、コーディングの効率が見違えるように上がる。
今回はその2つを導入し、前回とあわせて「補完機能」「リファレンス呼び出し」「実行環境」「ファイラー」を揃える。
これ以降も特化したプラグイン、例えばRailsを書くときにrails.vimを入れる必要はあるが「基本セット」は揃ったと考える。


なお、本エントリは下記の続きなので、前提等で不明な点があれば参照して欲しい。
そろそろしっかりvimを使う。dotfilesのgithub管理とvundleの導入。 - holyppの日記
そろそろしっかりvimを使う。github+vundleを利用したWindowsとの同期。 - holyppの日記
そろそろしっかりvimを使う。vimでRubyのコーディングをするために - holyppの日記

目次

・環境
vim-quickrun
・unite.vim
・参考サイト
・「しっかりvim」終わりに

環境

MacOSXで、プラグインはVundleを使ってインストールした状態。
f:id:holypp:20110515155159j:image

vim-quickrun

vim-quickrunは、vimで編集中のファイルをすぐに実行することができるプラグイン。
これがあれば、実行結果を確認しながら修正を行うことが出来る。
他にもプログラミングの写経を行うときなど、いつでも結果を見ることが出来るので重宝する。
使い方はファイルを開いたまま 「r」、つまり 「\r」 とタイプするだけ。(は半角の\か¥)

f:id:holypp:20110706012147j:image

ウィンドウが分割され、上に結果が表示される。
なお、引数を渡したいときは 「:QuickRun -args hoge」 とする。
このプラグインも、Rubyだけでなく多くの言語に対応している。

unite.vim

unite.vimは「任意の情報源から、任意の動作を実行する」ことができるプラグイン。
多機能なプラグインなので、一気に理解しようとせず「習うより慣れろ」で導入することを勧める。
私は主に「ファイラー」として使っており、今回は下記2つの動作を紹介する。
「最近使用したファイルを開く」
「任意のディレクトリにあるファイルを開く」


なお、理解するにはDOCをしっかり読み込むのが一番の近道だと思う。
https://github.com/Shougo/unite.vim/blob/master/doc/unite.jax

コマンド拡張と.vimrc

unite.vimではコマンドの拡張が行われるので、.vimrcでマッピングを行う。
コマンドは、主なものに「:Unite [{options}] {sources}」がある。
optionsではバッファ名の指定などを行う。(必須ではない。)
sourcesには「最近使ったファイル」や「今使っているファイルと同じディレクトリのファイル」など開く対象を指定する。
(※下記の.vimrcではoptionsとsourcesの順番が逆だが動作する。先にoptionsを書いたほうが良いかも。)


以下は私の.vimrcからunite.vim関連部分を抜粋。
私のマッピングは文字列「:xxx」が多いが、いろんな方の.vimrcを見ていると「Ctrl+何か」としているものをよく見る。

" 入力モードで開始
let g:unite_enable_start_insert=1

"mru,reg,buf
noremap :um :Unite file_mru -buffer-name=file_mru
noremap :ur :Unite register -buffer-name=register
noremap :ub :Unite buffer -buffer-name=buffer

"file current_dir
noremap :ufc :Unite file -buffer-name=file
noremap :ufcr :Unite file_rec -buffer-name=file_rec

"file file_current_dir
noremap :uff :UniteWithBufferDir file -buffer-name=file
noremap :uffr :UniteWithBufferDir file_rec -buffer-name=file_rec

" c-jはescとする
au FileType unite nnoremap    

" ESCキーを2回押すと終了する
au FileType unite nnoremap    :q
au FileType unite inoremap    :q
最近使用したファイルを開く

最近使用したファイルを開くにはsourcesをfire_mruとする。
コマンドは、:Unite [{options}] {sources}なので、上記.vimrcのこれが対応する。(前述の通り引数の順番が逆だが動作する。)

noremap :um :Unite file_mru -buffer-name=file_mru

要するに、私の環境ではvim上で 「:um」 と押下するとウィンドウが分割され、上がuniteのものになる。

f:id:holypp:20110706012145j:image

ここで「_vimperatorrc」が開きたいと思ったら、そのまま「vimp」などと入力することで絞り込みが行える。

f:id:holypp:20110706012146j:image

その後でファイルの上下移動を行い、Enterで開く。
このあたりの動作は全てカスタマイズが可能。

任意のディレクトリにあるファイルを開く

もう一つ例を。上記と同じ要領でsourcesを「今開いているファイルのディレクトリ」としたい場合はこちら。

noremap :uff :UniteWithBufferDir file -buffer-name=file

もちろん「:uff」でも「:UniteWithBufferDir file」でもunite.vimが開くものは同じ。

f:id:holypp:20110706012148j:image

ディレクトリを書き換えて目的のファイルを見つける。(上の状態から「txt/」を削ったところ。候補も反映されている。)

f:id:holypp:20110706012149j:image

このあたりは実際に使うとすぐに理解できる。
説明を続けると長くなる一方なので、後述の「参考サイト」を見たり、実際に使うとわかりやすい。

「しっかりvim」終わりに

あるとき、ふと「vimを使ってしばらくたつけど、何も学んでないな」と思った。
エディタはしっかり使い込むべきだと感じていたので「そろそろしっかりvimを使ってみるか」と、意識的に学ぶように心掛け、エントリも書くようにした。
その結果、vimは「導入」というレベルをようやく抜けて「学ぶ習慣を維持する」レベルになった。
このままのペースでvimを学び続けていけば、遠くない時期に中級者になれるんじゃないかと思っている。


最後に。
前回のエントリの話ですが、多くのブックマークをつけていただき、ありがとうございました。
vimをこれからも学んでいこう」という気持ちが強くなる良いイベントになりました。