vim tips

多分他のところで既出なんだろうけどとりあえず気に入ったvimのtipsでも書き連ねていこうと思う。
ということでヴィジュアルモードのtips
まず一つ。


矩形選択モードやべぇ。
必須!!ってほどの機能ではないが地味に便利だ。

fib = 1 : 1 : [ a + b | (a, b) <- zip fib (tail fib) ]
printList [] = return ()
printList (x:xs) = print x >> printList xs
main = printList fib

の様な文章(つーかソース)があったときに、すべての行の先頭に"> "を入れたいとする。
つまりこう↓

> fib = 1 : 1 : [ a + b | (a, b) <- zip fib (tail fib) ]
> printList [] = return ()
> printList (x:xs) = print x >> printList xs
> main = printList fib

(世に言う文芸的Haskell文章
vimを使うとして、どうするのが楽か。というもの。
世に言う詰めvi的にいうと(詰めvimか)、最短ストローク数は矩形選択を使った6と思われ。
他に最短あれば教えて下さいな。
カーソル位置は一行目の先頭ということで。


まぁ、単純に挿入して行くと

I> [Esc]jI> [Esc]jI> [Esc]j> [Esc]

で19ストローク


まぁさすがにこれはアレなので反復実行の"."を使うと

I> [Esc]j.j.j.

これで10ストローク


exモードの置換使うのも一つの手、ということで

:%s/^/> /[Enter]

これまた10ストローク
まぁ、行数が増えてくるとこっちの方が楽かな?


あとマクロもいいかも。

qaI> [Esc]jq3@a
qaI> [Esc]j@aq@a

11か12ストローク。むしろ増えてしまった...(д
まぁ、マクロは色々使い道があるので覚えといて便利かもしれない。


で、ストローク数もさることながら、わかりやすさの面でも矩形選択が一押し。

[C-v]GI> [Esc]

余裕の6ストローク
[C-v]はCtrl-Vのことな。矩形選択開始。
通常選択(v)や行選択(V)ではNG
矩形選択+先頭挿入(I)だと選択したすべての範囲先頭に挿入してくれる。
もち末尾挿入(A)でも有効。
あと矩形選択+訂正(c)もまたGoo(д)b
tabとかで横方向を揃えたリストなんかの編集にもってこい。
ひたすら同じようなことを繰り返すようなスクリプト書くのに便利(urpmi.addmedia ***とか作ったなぁ...。最後に":%s/\t/ /g"とかで整形しなおすと。
ただなんか[Esc]押してから適応されるまで少し間があるのが...(うちの環境だけ?


矩形選択を宣伝しまくったのでもう一つ。
範囲選択のやり直し(gv)
あると意外に便利。


g系のコマンドは基本的に"gg"とか"G"しか使わないのだが"gv"も覚えておいて損は無し。
具体的にはヴィジュアルモードで選択した範囲をもう一度選択し直してくれるコマンド。
選択した後にコマンドミスったとか、同じ範囲になんどもコマンド実行したい、って時に便利。


なんか長くなってきたのでここまで。ノシ