vim勉強会#1に参加してきました

大学に入った頃はemacs使ってプログラム書いてたのだが,Linuxを各種サーバとして使うようになって設定ファイルとかemacs立ち上げるよりvimの方が速いしcolor syntaxも豊富だし,気づくとvimを使ってプログラムやtexで文書を書くようになってた.
けど,vimrcもあまり書いてなく基本的なコマンドしか使ってなかったので本格的に勉強してみるぞ,とそんな感じで参加.

勉強会で使用した本はこれ.

ViIMproved‐Vim完全バイブル

ViIMproved‐Vim完全バイブル


本日読んだ範囲は5章,6章,7章,23章(少し).

5章 複数ウィンドウの扱い

「行数CTRL-w」系: ウィンドウの高さを調節するコマンド.なかなか便利だ.
縦に画面分割することが多いがこの本には「:vnew」とかが書いてないなぁ.
あと縦に分割してさらにbufferを開きたい.
=> 20章にウィンドウについてさらに詳しく書いてて「:ball」でバッファを開くことができるが縦ではなく横に開かれてしまう.

6章 基本的なビジュアルモード

「i[文字]」は'i'ではなく'I'.
ここで-cは別物だと初めて知る.
ずっと同じものだと思ってて常にCTRL-cしてた.
は「脱出」キーであり,CTRL-cは「キャンセル」なのかな.

7章 プログラマ向けコマンド

{にカーソルをおいて「=%」で自動的にインデントできることを初めて知る.
とても便利だ.例えばcでifやforなど多重でネストされてても自動で適切にインデントしてくれる.

23章 プログラミングに便利な機能

インサートモード中にCTRL-t, CTRL-dでインデントできる.
すごい便利.

子ネタ

gj, gkで物理移動ができる.
一行が長い場合折り返されるのだが,jやkだと見た目で移動ではなく行で移動する.
分割するとどうしても折り返される部分があるのでgj, gkで物理移動できると便利.
そこでj, kをgj, gkにする.

nnoremap j gj
nnoremap k gk

追記

上の設定だとvisual modeのとき物理移動できないので,noremapを使った方が良いと助言いただきました.

noremap j gj
noremap k gk

また「:vertical ball」でbufferを縦に分割して表示してくれます:)