調子に乗ってvimを覚えた経緯を書いてみる。

昨日書いたエントリが信じられない事に。

あれ?これ誰のブログ???
10user以上のブクマなんて貰った事無いんですけど......。
と、びっくりしました。

という訳で調子に乗って次はvim

screen使う理由とかは書いたしlinuxについても書いたつもりなので、
次はvimでも書いてみようと思います。
*1

なんでemacsじゃなくてvimなの?

hjklという素晴らしいキー配置がわからんのか貴様!
とか言う理由ではなく。
学生の頃にnethackという不思議なダンジョンの元になった様なゲームを
してた時に覚えたキー配置だからだったりします。

Linuxで開発しようとした訳。

実は最初はEclipseプラグインradrailsとかで開発してました。
しかし最初にアテンドされたノートPCのHDDアクセス速度が重いのか、CPUが足りないのか。
日に日に重く感じるradrails*2
こんなんじゃ開発できない!


という事で、テキストエディタで開発しようと思いつきました。
社内ではvimemacsを使ってる人は半々ぐらいだったんですが、
遅さに嫌気がさしてた私はvimをとりあえず使ってみようとしました。*3

最初にした事

vimをとりあえずインストール。
その後とりあえず、rails用にカスタマイズ。
rails.vimだけ入れてみました。


なんか色々機能が動かないので7.0にアップデート。
当時はapt-get install vimでなんか7.0になんなかったので、
ソースを落としてきてコンパイルした覚えがあります。
configure なんかは [vim ruby configure]でオプションを調べてコピペでやりました。


今は大体apt-getとかyumで7系のvimは落ちてくると思います。
rubyの人だったら昔書いたインストールのエントリとか良いと思います。

使い始めてもキーボード操作わけわかんねーんだよ。

画面にマニュアルがある訳でもないし、helpがある訳でもありません。*4
何これ。操作方法わかんねーんだよ!状態です。
とりあえず、putty + vimで始めた私にとってのvimはメモ帳並みの物でした。

3/3追記
何処を見ての発言なんだろう。のエントリから指摘貰ったんで修正。
vimのヘルプドキュメントは充実してます(><)
そもそも使い方わかんないんだったらとりあえずシェル上からvimtoturとかやって下さい。
それかvim中で:helpとか


最初私がろくに読んでなかったーって言うだけの話です。
今はドキュメントが充実してないとは思ってないですよ。


:wと:wqと:qと:q!とhjkl とiとddとxとescしか使ってなかった時期が長かった気がします。
*5
という訳で、なんかネット上で見つけたチートシートなんかみてました。


で、yyでコピー。pでペーストと覚えて、なんとかまともにvimでメンテできる様になった感じです。

vimrcなんかも弄りだした

vimrcでset numberとかやったり、autoindentとか設定するとだいぶ楽だって事に気づいて
設定始めたんですが、色々晒してあってどれが良いかわかんない。
とりあえず必要そうなの集めたり、会社でvim使ってる人にお勧めのを聞いて
こんな風になりました

実はコマンドの組み合わせじゃんvim

と気づいたのが次の段階。
wでワード、gでその行に移動。数字で回数とか移動をする様になって
3w と打ち込んで3つ後のワードに移動したり、3jとかで3行下に移動したり、100gとかで行番号指定して移動するコマンドを覚えて、

:set number

とかで行番号表示する様になってた頃です。


dとかyとかは、削除するよー、コピー*6するよーって意味で、
dd yyってやると一行それをやってくれますが
コマンドを送った後、移動コマンド実行するとそれをやってくれる事に気づきました。
d3wって打ち込むと3単語削れたり、y3jってやると3行下もコピーするのです。
すげーじゃん。やるじゃんvimって感じでした。
10pってやると10回貼付けるし。


超賢い。
gg で1行目に移動して、dG*7ってやると最後まで削除してくれる。

ビジュアルモードとキーボードマクロを覚えた。

ビジュアルモードの存在に最初気づきませんでした。
たまに選択モードみたいな状態になるなーって思ってたんですが、
操作できなくなるしわけわかな動きだし。


vを押してビジュアルモードに移動して、自分で選択してその後dとかyとかcを押すと、
その選択した範囲にコマンドが適応されるんだーってびっくり。
それまでは、マウスでコンソール選択して、コンソールのコピー機能を編集モードのvim
ペーストしたりしてました。


そしてキーボードマクロ、qとキーボードの組み合わせで、キーボードマクロが組めるって事に
気づいた時は感涙ものですよ。
qaってやって記録モードになり、 yy p j(コピーして、ペーストして次の行に移動する)その後
qって押して記録モード終了。
@aで繰り返す。
10@aとかやると10回繰り返し。
200行のテキストを2行づつにするとか。
qa で記録モードになって d10l j ^ (10文字削除後、下に移動して行の先頭に移動する)で
qって終了して
100@aで100行全部の前の10文字を削除したりとか。


そしてそこにCtrl + aとCtrl + xが登場です。
数字の上でCtrl + aとすると数字が増え、Ctrl + xとすると数字が減ります。
キーボード操作なのでキーボードマクロで使用可能です。
100行ぐらい、行の一部を変えながらコピペももう怖くない。


ここまで覚えれば、もうvimがあれば良いです。

ウィンドウ分割とバッファエクスプローラ

そしてCtrl + w後に大文字でSと打つとウィンドウが分割する事を知ります。
上と下で分割。
分割後、Ctrl + wの後にjとかkとか入れると自由に移動ができ、
それぞれのウィンドウで別々のファイルとか弄れる訳です。


更にそこにMiniBufExplorerを入れてみて、バッファをすぐに切り替えられる様になると
姉さん大変です。姉さん事件です。状態。
どんどん使いやすくなります。


というか、MiniBufExplorerを入れたのが実は去年の8月でまだ半年ぐらいってのに自分でびっくりしました。
もっと前から使ってる気がしました。

後はまあ、適当にプラグイン入れたり

結局、このエントリで書いた様に

  1. EnhCommentify.vim コメントアウトプラグイン \xで選択範囲をコメントアウト
  2. SuperTab編集時にtabキーで単語を保管してくれる様になるプラグインbashとかでなれた操作ができるので便利。
  3. yanktmpvim全体のyankを共有できるプラグイン。syでヤンク、spでペースト。screenでvimを複数立ち上げてる時に使ってます。

と、vim-rubyとrails.vimを使っています。

*1:よくid:kstnさんにemacsじゃなくてvim使おうよとか言ってるけどあまり理由に言及してないし

*2:きっと実際に重くなったのではなく、気が短くなっただけ

*3:nethackの件もあったし

*4:あるけど

*5::w 記録 :wq 記録して終了 :q 終了(保存してないとおこられる) :q! 保存してなくても終了 hjkl 移動 i 文字入力 x 一文字削除 dd 一行削除 esc 文字入力完了

*6:ヤンク

*7:Gは最後の行に移動する