vimでクリップボードを利用する

割と中々出来なかったネタ. vimでは編集している文章をコピーすることをヤンクと言いますが,この情報はクリップボートには反映されませんし, ペーストしても貼り付けられません.

で,そうなると困るのが例えばwebブラウザでサンプルコードを確認しながらスクリプトを書く場合です. このご時世,少し試したいサンプルコードをコピペ出来ないとか終わっています.

また,少し,メモをして,そのメモをvim以外のアプリケーションに流しこみたいときにも結構困ります. で,その解決法を調べたのでメモしておきます.

1.デフォルトの機能でなんとかする

結論を先に言えばなんとかなります. フルキーボートが使用できる環境なら,既存のキーバインドを利用すれば上記の作業をこなせます.

クリップボードに関するキーバインド (windows/linux)
キーバインド 内容 備考
Ctrl + Insert vimの内容をコピー ヴィジュアルモードと併用で使用
Ctrl + Delete vimの内容をカット ヴィジュアルモードと併用で使用
Shift + Delete vimの内容をカット 基本的には同上
Shift + Insert クリップボードの内容をvim上にペースト 基本的には挿入モードと併用
クリップボードに関するキーバインド (Mac)
キーバインド 内容 備考
Command-c vimの内容をコピー ヴィジュアルモードと併用で使用
Command-x vimの内容をカット ヴィジュアルモードと併用で使用
Command-v クリップボードの内容をvim上にペースト 基本的には挿入モードと併用

2. xselを利用する

xselとは標準出力をクリップボードに流し込むコマンドです. これを利用することで,vimの内容もクリップボードに流し込むことが可能です.

xselの導入

fedora19の場合,yumからいけます. おそらく,Linuxだったら大体これでいけるかと.

xselの使い方

1
2
echo aaaaaa > hoge.txt
cat hoge.txt | xsel -bi

このようにすると,catの内容がクリップボードに流れます. vimで編集している文章をクリップボードに流すには範囲を選択したあと,

1
:w !xsel -bi

とすればクリップボードにコピーされるはずです.