Vimでコピー&ペーストはy(ヤンク)とp(ペースト)

なんだかんだとVimを使い始めて半年経ちました。
今回から色々とやってみた事とか、ぶつかった問題とかを書いてみようと思います。
ちなみに、使い出した頃の記事はコチラ

コピー&ペーストはy(ヤンク)とp(ペースト)を使うようになった。

まず今回のお題は「コピー&ペースト」です。

:source $VIMRUNTIME/mswin.vim

Vimを使いはじめた頃は上記を「$HOME/.vimrc」に以下を記述する事で「Ctr+C」 でコピー、「Ctr+V」でペーストを使えるようにしていました。

Vimの扱いにも少づつ慣れはじめ、ノーマルモードでのカーソルの移動を「h,j,k,l」が習慣になってきた頃から「Ctr+C」や「Ctr+V」でコピーとペーストを行う事に不自由を感じVim本来のy(ヤンク)とp(ペースト)を利用する事にしました。

ただここで一つ問題が・・・

Vimの一時保存する領域はクリップボードではない

Vimではy(ヤンク)したデータの一時保存する領域がクリップボードでは無く、ヤンクバッファと言う領域になります。
つまり、Vim上でy(ヤンク)したデータは他のアプリケーションで「Ctr+V」ではペーストとする事ができません。
またアプリケーションで「Ctr+C」でコピーしたデータもp(ペースト)で貼り付ける事も出来なくなります。

もちろんVimでもクリップボードを扱う方法はちゃんと用意されています。
“Shift + Insert”キー”でペースト “Ctrl + Insert”とコピーが出来るようになっています。
ただ、これではとても不便でいっそ「Ctr+C」や「Ctr+V」を使えるようにしたほうがはるかに作業が捗ります。

解決策

「Ctr+C」や「Ctr+V」に戻してしまうと言うのも一つの手です。
ですが、ここではあえてy(ヤンク)とp(ペースト)を使う事に拘ってみました。
解決策としては以下のような設定を「.Vimrc」に記述しています。

"ノーマルモードでクリップボードからペースト
nnoremap <C-p> "+p

"インサートモードでクリップボードの内容をペースト
inoremap <C-p> <ESC>"*pa

"Yankした情報を他のアプリケーションでも利用
set clipboard=unnamed

これによってVimでもクリップボードに一時保存する事でき、他のアプリケーションとのやり取りも問題なく行えます。

でも・・・

ここまでやってきてなんですが、「Ctr+C」や「Ctr+V」を使うというのもやはり一つの方法です。
今回はWindows環境での説明になりましたがMacVimではデフォルトで「Ctr+C」と「Ctr+V」(Macなので正確にはCtrキーではなくOptionキーです)が利用出来た記憶があります(確証がありませんが)。

もし、これによってVimを使う事を懸念されている方がいれば迷わず以前解説した「mswin.vim」を有効にする事をおすすめします。

さて、次回はいつになるかは分かりませんが、良く使うプラグインのお話とかを書こうかと思います。