Vimの小技

vimに表示している文字をマウスで選択し、他の場所にペーストす… - 人力検索はてな
こういうの見ると結構知らない人もいるんだなということでいくつかVimの小技を書いてみよう。

質問の貼り付けでおかしくなる問題

  1. まず、コピーする
  2. set paste すると貼り付けモードになる
  3. コピーた内容を貼り付ける
  4. set nopaste すると通常のモードになる


で原因ですけど、これ、プログラマ的に言えばCRやLFなどもコピーするっぽいです。
さらに通常のモードですと、改行すると自動インデントが働くので、余計おかしくなります
たとえば、Cのコードをマウスでコピペして張り付けると以下のようになります。

//元コード
void hoge(void) {
    int x; //スペース4つ分のインデント
    x+=1;
}

//貼り付け後
void hoge(void) {
        int x; //ここはスペース4つ分のインデント + 自動インデントのスペース4つ分になる
            x+=1; //ここはさらにひどくなる
}

で、:set pasteするとvimのオプションを設定して、上記のような動作にならないようにしてくれます。

スペースとタブの可視化

Makefileを作るとき等に重宝します。
set listでタブを"^I"という表示に変えてくれます。
set nolistでもとへ戻します。

行番号の表示

まあ、これは結構有名
set numberで左に行番号を表示します。
問題なのは、マウスでコピーするときに邪魔なのでset nonumberでOFFに出来ます。

検索結果のハイライトを消す方法

以前に書いたのですが

nmap :nohlsearch

を設定ファイルに書いておけばOK。
これで、Esc2回連打でハイライトが消えます。



まあ、書き出したら他にも色々あるけど、これぐらいで。