この記事は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さんです。楽しみです。