Teratermのアノ挙動をvimに!

この記事はVim Advent Calendar 2012の61日目の記事です。
60日目は@KSuzukiiiさんの「はじめての unite source(unite-tig)」でした。

最近仕事で使うWindowsでもgvim(kaoriyaさん版)を使用しだしたのですが、コピペまわりで四苦八苦したのでそのあたりの事を書きます。

Windows gvimでのコピペ事情

Windowsのgvimですが、Windows標準の<C-c><C-v>でのコピペが初期設定ではできません。

これを実現するにはsource $VIMRUNTIME/mswin.vimを書いてvimrcで有効にすればできるようになります!が、行選択ビジュアルモード<S-v>時に<C-f><C-b>で画面移動すると選択が外れるバグがあります。

これが結構使う動作のため、泣く泣く無効化させてクリップボードの貼り付けは右クリックから行なっていました。

ある日気づいた!

gvimで右クリックするといくつかのメニューが出てきますが、クリップボードからの貼り付けにしか使用していない事に気づきました。唐突ですが皆さんはsshクライアントは何を使用していますか?私はMacではTerminal.appでWindowsではTeratermを使っています。

このTeratermのデフォルト設定に以下の2つの機能があります。

  • 選択した文字列を自動でクリップボードに保存
  • 右クリックするとクリップボードの文字列を挿入

この2つの機能をなかなか気に入っていまして、右クリックを貼り付けにしか使用していないならTeratermのこの挙動をVimにも設定したところなかなか便利!

vimrcに追加!

まずは「選択すると自動でクリップボードに文字列を保存する」設定から。下記の設定でビジュアルモードで選択すると自動でクリップボードに保存されます。(+clipboardでコンパイルされたvimである必要があります)

" GUI
set guioptions+=a
" CUI
"set clipboard+=autoselect

次に「右クリックでクリップボードの文字列を挿入」ですが、ノーマルモードとインサートモードの両方でできるようにしました。こちらも*レジスタを利用するのでclipboardが有効なvimが必要です。

nnoremap <RightMouse> "*p
inoremap <RightMouse> <C-r><C-o>*

完成ッ!

上記の設定でTeraterm風のキーバインドのVimを得られました。エクセルやらでコピーして右クリックでVimに貼り付けッ!今のところこの設定で快適に作業できています。このカスタマイズ性の高さがVimの醍醐味ですね。

明日の62日目は2回目の@thincaさんです。楽しみです。