「Vimを使い始めようと思うんですけど、おすすめを教えてください」
この記事は Vim Advent Calendar 2012 : ATND 17日目の記事です。
前日は@syootaroさんのでした。
今年、ぼくの周りで「Vimを使ってみようと思う」と人が3人くらい出てきました。
その人達から「おすすめのプラグインや設定ないですか」とか
「Vimってこういうこと出来ないの?」という質問を受けることがありました。
また、私の操作を見て「何それどうやったんですか」という質問もいくつか受けました。
毎回説明するの面倒くさいのでこの経験を生かし、今後も増えることが間違いない新世代Vimmerに向けて
「ぼくがおすすめする基本操作と初期設定とプラグイン」を書いてみたいと思います。
ほとんどただのリンク集となっていますが。
対象は「Vimを触り始めてちょっと経った」程度の人です。
何より大事なこと
viじゃなくてVimです。
前提
Vimはインストール済みであるとします。
また、いつもなら「続きは:helpで」と書くところを今回はそうせず、参考サイトへのリンクにしています。
おそらくVim触りたてだとヘルプ読んでもよく分からないのではという推測からです。
基本操作
「hjklで移動するのかったるい」
システム管理などでVim/viをいじったことがある人は「hjkl」の4つのみ覚えていて、
それが全てとばかりに「hjkl」のみで移動しているのをたまに見かけます。
行移動ならば、「w」「W」「e」「E」「b」なども使いましょう。「0」「^」「$」もよく使います。
ウィンドウ移動ならば「Ctrl-f」「Ctrl-b」、「Ctrl-d」「Ctrl-u」など便利です。
それぞれどういう移動になるのか、細かくはこちらを参考にしてください。
載っているすべての操作を覚える必要はないでしょう。
チートシートを前にすると覚えることが大量に思えて億劫になるかもしれませんが、
慣れてしまえばどうってことありません。
操作は記憶するのではなく、体に染み付きます。
使いやすい/覚えやすい操作で移動を身につけた後に他のエディタを使ったとき、
Vimmerがよく使う台詞が自然に出るようになります。
「カーソルキーで移動するのがダルい」
「インサートモードを抜けるのにESCを押すのが面倒」
代替として「Ctrl-[」もあります。
またはマッピングで好きなキーに割り当てることも出来ます。
マッピングについては後述の設定で扱います。
でもぼくはほとんどESCです。慣れたら気にしなくなりました。
「え、何いまのどうやったの」
テキストオブジェクトを使った操作をすると感動されることがあったりなかったり。
テキストオブジェクトはぼくがVimを好きな理由の一つです。
次のようなテキストがあるとします。
"ぼくがVimを好きな理由の一つです。"
ここでダブルクオート内にカーソルがある状態で、「di"」と打てばダブルクオート内の文字が全て消えます。
「di"」ではなく「da"」とすればダブルクオートごと消えます。
後述の「テキストオブジェクトをもっと便利に」項に参考リンクを載せています。
「矩形選択ってできる?」
たまに「たんけいせんたく」と読んでいる人を見ますが、「くけいせんたく」です。
サクラエディタにもEclipseにもあるのでVim固有ではありませんが、便利です。
参考:矩形ビジュアルモードを利用した編集を使いこなす — 名無しのvim使い
「サクラエディタ使ってたけど、あれマクロが便利なんだよね」
これも割と一般的な機能ですが、もちろんVimにもあります。
参考:Vimの使い方−Tips
補足ですが、「@@」で直前のマクロ実行になります。便利。
設定(全般)
.vimrcへの記述です。.gvimrcではなく.vimrcに記述する点に注意しましょう。
シンタックスやファイルタイプの設定
JavaやPHPといった言語毎にハイライトを有効にしたりします。
syntax on filetype on filetype plugin on filetype indent on
「xxx.swpとかいうファイル作るのやめて」
set noswapfile
「他のアプリでコピーした文字をVimで貼付けたい。またはその逆も」
set clipboard=unnamed,autoselect
設定(キーマッピング)
.vimrcへの記述です。.gvimrcではなく.vimrcに記述する点に注意しましょう。
「また設定変更? .vimrc開くのダルいんだけど」
.vimrcはそれなりの頻度でいじります。
その際に毎回エクスプローラーで移動して〜とかやっているといじる気力も萎えます。
なので、一発で開けるようにマッピングします。
下記では「スペース - .(ドット)」で開くようにしています。
nnoremap <Space>. :<C-u>tabedit $MYVIMRC<CR>
「$MYVIMRC」で上手く開かない場合は.vimrcへのフルパスを書きましょう。
「インサートモードを抜けるのにESCを押すのが面倒」(2度目)
ESCを他のキーに割当てればいいんです。
例えば「Ctrl-c」にESCをマッピングしましょう。
(「Ctrl-c」はデフォルトでESCに似た挙動をしますが別物です)
inoremap <C-c> <Esc>
プラグイン
Vimに対するイメージがviの人ほど、Vimが色々できることを知ると驚きます。
プラグインを入れることにより、IDEに劣らない操作性を簡単に実現できます。
プラグインについては好みもあると思うので、ぼくのおすすめとは他にいくつか紹介します。
「プラグイン入れるにはわざわざpluginフォルダとかautoloadフォルダとかに自分で置くの?」
「え、Vimballって何?」
そんなのは昔の話です。
今ではナウいプラグインマネージャーがありますので、まずそれを入れましょう。
個人的にはこれがないと話になりません。
今の有名どころ=情報が多いものとしては、以下の3つだと思います。
ぼくはVundleを使っています。
最近はNeoBundle使っている人が多いようです。
「IDEみたいな補完ってできないの?」
標準で補完は可能ですが、プラグインを入れることでより強力な補完を行えます。
- Shougo/neocomplcache · GitHub
- 参考:VimでPHPを書く私のneocomplcache設定を公開してみる | karakaram-blog
- (※vimprocはなくても構いません)
「for文とかさ、IDEだとある程度勝手に入力してくれるやつ、ないの?」
スニペットですね。あります。
- Shougo/neosnippet · GitHub
- 参考:neocomplcacheのsnippetsがとてもいい - rochefort's blog
- (※最近neocomplcache-snippets-completeはneosnippetに変更となりました)
でもぼくはVim scriptを書く時以外使いません。
「IDEみたいに画面端にファイラー出したいんだけど」
ファイラーのプラグインを入れましょう。
- scrooloose/nerdtree · GitHub
- 参考:英語&英会話学習SNS開発記録 : vimプラグインのNERDTreeを自分好みにカスタマイズ。
- (記事内で「Ctrl-eが起動」となっているのはそういうマッピングをしているからなので注意)
- Shougo/vimfiler · GitHub
- Shougo/unite.vim · GitHub
- (VimFilerを使う場合はunite.vimも必要です)
ぼくは後述のctrlpプラグインを使うのでファイラーはあまり使いません。
が、たまにNERDTree使っています。
「Eclipseでの[Ctrl-Shift-R]みたいなことは出来ないの?」
または「Sublime Text2でいう[Ctrl-p]みたいなことは出来ないの?」
できます。
- vim-scripts/FuzzyFinder · GitHub
- vim-scripts/L9 · GitHub
- (※FuzzyFinderを使う場合はL9も必要です)
- 参考:FuzzyFinderの「FufFile **/」が最強:利用頻度1日数十回 - vimまっしぐら★ - vimグループ
- (※fuf.vimという名前に変わっているが、ググるときはfuzzyfinderの方が引っかかる)
ぼくは以前はfuf.vimを使っていました。
今はこの用途では主にctrlp.vimを使っています。
なお、unite.vimについては他2つと違いもっと色々なことが出来るんですが、
今回の対象者には合わないと判断して割愛します。
「最近開いたファイルの履歴見たいんだけど」
MRUプラグインといいます。
これは上記fuf/unite/ctrlpプラグインにも組み込まれているので、
今では別途プラグインを入れる必要はありません。
独立したプラグインとしては以下があります。昔ぼくも使っていました。
「Vim上からGit操作したい」
ぼくはどっちも使っています。
「TextMateはZen-Codingプラグインがあって便利」
Vimにもある。
ぼくはがっつりHTML書くこともないのであまり使わないけど、
このプラグインを知ったVimmer2人は感動してました。
「テキストオブジェクトをもっと便利にしたい」
おまけ
「関数やクラスの定義にジャンプできないんですか?」
よくある質問の一つです。
ぼくの回答は「tagsファイル作ればできるけど...」です。
Vim覚えたてで四苦八苦している人に、tagsファイルまで教えるのはちょっと気が引けます。
(もともとtagsについて知っている人ならいいんですが)
あれもこれもと詰め込むと嫌になってしまうのではないかという懸念です。
なのでここでは、おまけ・補足として載せます。
tagsについて
- 参考:Vim でタグジャンプを使ってみる - Archiva
- 参考:Exuberant Ctagsでタグファイル作ってVimでタグジャンプしたら便利だった - kanonjiの日記
- 参考:Vimでソースコードを素早く追いかける - Guyon Diary
タグ関係のプラグイン
ぼくは現場のコードではtags使いません。
中身の構造を全く知らないライブラリなどを読む時に使う程度ですが、その時にはとても便利。
その際にはunite-tagのみ使っています。
「Vimの情報ってどこで手に入れてます?」
などと聞かれたことはありません。
聞かれてもいないことまで答えます。
基本的な情報やTips
- 名無しのvim使いへようこそ。 — 名無しのvim使い
- Vim-users.jp
Vimテクニックバイブル ?作業効率をカイゼンする150の技
- 作者: Vimサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2011/09/23
- メディア: 単行本(ソフトカバー)
- 購入: 19人 クリック: 661回
- この商品を含むブログ (38件) を見る
- 書籍の内容は主にTipsやプラグイン紹介なので、基本操作を覚えたい人には向いてないと思います。
- 代わりに、少しVimに慣れて「どんなプラグインがあるんだろう」とワクワクできる人にはとても楽しい本です。
最新情報とか
- TwitterでVimのこと呟いている人をフォロー
- ただ最近はタイムラインを見ていない
- Googleで「Vim」を最新一週間とかで絞って見る
- RSS使えば楽なんだけど、どうにも続かない
- はてなブックマークでVimの記事が出てきたら見る
- vim-users.jp – Lingr
- 過去ログを読めるAndroidアプリを個人的に作っていて、年内にはリリースできる予定
[12/18追記]
「Vimでテトリスできないの?」
Vimでテトリス出来ないの?と、ふってみる - 「Vimを使い始めようと思うんですけど、おすすめを教えてください」 - ぼっち勉強会 (id:kanno_kanno / @kanno_kanno) URL
私自身はやったことありませんが、いくつかゲームもあります。