パーソナルツール

vimエディタからクリップボードを利用する。

作者: 小見 拓 最終変更 2012年01月08日 11時58分

アプリケーション間のデータの受け渡しには、 クリップボードという仕組みがよく利用されています。 クリップボードを経由してデータを共有することにより、 仕組みの違う各アプリケーションで、それぞれの得意能力を活かした データの編集が可能になります。 当然、vimエディタでも、クリップボードを使用して 他の専用アプリケーションで作成したデータを再編集したり、 あるいは、vimエディタのパワフルな編集能力で作成したテキストデータを 他のアプリケーションに渡すことができます。 (Windows, Mac)

概要

アプリケーション間のデータの受け渡しには、 クリップボードという仕組みがよく利用されています。
クリップボードを経由してデータを共有することにより、 仕組みの違う各アプリケーションで、それぞれの得意能力を活かした データの編集が可能になります。
当然、vimエディタでも、クリップボードを使用して 他の専用アプリケーションで作成したデータを再編集したり、
あるいは、vimエディタのパワフルな編集能力で作成したテキストデータを 他のアプリケーションに渡すことができます。

ショートカットキー入力によるクリップボードの操作

まず、何の知識も持たない方が 最も簡単にクリップボードのデータを扱う方法を紹介します。

Windows環境

Windows環境のvimエディタでは、次のコマンドでクリップボードのデータを操作できます。
この操作は、ノーマルモード、入力モード、コマンドラインモード、ビジュアルモード、 検索と全ての操作で使用可能です。

  • Control キー + Insert キーでコピー
  • Control キー + Delete キーでカット
  • Shift キー + Delete キーでカット
  • Shift キー + Insert キーでペースト

コピーする範囲、カットする範囲は、ビジュアルモードで選択したテキストの範囲となります。

ビジュアルモードで選択してからコピー
Windows環境
キー入力 機能 説明
Control-Insert コピー ビジュアルモードで選択したテキストをコピー。コピーしたテキストはクリップボードに入る。
Control-Delete カット ビジュアルモードで選択したテキストをカット。カットしたテキストはクリップボードに入る。
Shift-Delete カット ビジュアルモードで選択したテキストをカット。カットしたテキストはクリップボードに入る。
Shift-Insert ペースト クリップボードのテキストをペースト。

Mac OSX環境

Mac OSX環境のvimエディタでは、 通常のアプリケーションのコピー、カット、ペーストの操作と同じ操作で、 コピー、カット、ペーストができます。
ノーマルモード、入力モード、コマンドラインモード、ビジュアルモード、 検索と全ての操作で使用可能です。

  • Command キー + c キーでコピー
  • Command キー + x キーでカット
  • Command キー + v キーでペースト
Mac OSX環境
キー入力 機能 説明
Command-c コピー ビジュアルモードで選択したテキストをコピー。コピーしたテキストはクリップボードに入る。
Command-x カット ビジュアルモードで選択したテキストをカット。カットしたテキストはクリップボードに入る。
Command-v ペースト クリップボードのテキストをペースト。

メニューによるクリップボードの操作

GUI版vimエディタの場合、 「編集」メニューにある「切り取り(T)」「コピー(C)」「貼り付け(P)」を使用しても、 クリップボードを使用した編集処理ができます。
この操作も、上で紹介した操作と同じく、ノーマルモード、入力モード、コマンドラインモード、 ビジュアルモード、検索と全ての操作で使用可能です。

メニューでの操作

「*レジスタ」によるクリップボードの操作

「*レジスタ」

クリップボードのデータは、vimエディタの「*レジスタ」を使用すると参照できます。
また、「*レジスタ」にデータをセットすることで、クリップボードにデータをセットできます。

スターレジスタは、クリップボードとして扱える。

Note

vimエディタの「clipboard」オプションに「unnamed」がセットされていない場合、
vimエディタでテキストを普通にyankすると、 そのデータは「無名レジスタ」と呼ばれる場所に配置されます。
( 無名レジスタ ≠ *レジスタ )

レジスタにデータをセットする

「*レジスタ」を使用してクリップボードにデータを入れる方法は、 通常のレジスタの操作と変わりません。
「*レジスタ」を指定し、ヤンク、もしくはカットを実行すると、 クリップボードにデータがセットされます。

1単語分のテキストをコピー。コピーしたテキストはクリップボードに入ります。
"*yw

7行分のテキストをカット。カットしたテキストはクリップボードに入ります。
"*7D

上のコマンド例のように、コマンド実行時に範囲を指定したり、
ビジュアルモードで範囲を選択してから "*y と入力して、 「*レジスタ」にデータをセットします。

ビジュアルモードで選択してからコピー

レジスタからデータを読み込む

ノーマルモード、ビジュアルモード時に、 「*レジスタ」からデータを読み込み、カーソル位置にペーストするには、 次のようにコマンドを実行します。

カーソル位置にクリップボードのテキストをペースト。
"*p

ノーマルモード、ビジュアルモード以外の時は、 レジスタのデータを貼り付ける Control-r を使用すると良いでしょう。
入力モード、コマンドラインモード、検索時に、 Control-r {レジスタの名前} と実行すると、 指定したレジスタのデータを貼り付けられます。

「*レジスタ」のデータを出力
<C-r>*
検索時。クリップボードには「クリップボード」というテキストが入れられている

↓ 例えば、この状態で Control-r * と実行すると、その位置にレジスタ「*」のデータを出力できます。

検索時。クリップボードのデータを出力

クリップボード関連の設定

vimエディタにはクリップボードに関する設定も用意されています。
次に紹介する2つの機能は、vimエディタの設定ファイルに、その設定を書き込むと有効になります。

ビジュアルモードで選択したテキストが、クリップボードに入るようにする。

次の設定をvimエディタの設定ファイルに書くと、 ビジュアルモードで選択したテキストがクリップボードに入るようになります。
ビジュアルモードの選択範囲を変更した瞬間に、 その選択したテキストでクリップボードのデータが書き換えられていきます。

この機能を有効にする設定の書き方は、GUI版のvimエディタとそれ以外で違うので、 気をつけてください。

" GUI版vimエディタで、この機能を有効にするなら、この設定を追加する。
:set guioptions+=a

" GUI版でない場合は、こちらの設定を追加する。
:set clipboard+=autoselect

yankしたテキストが無名レジスタだけでなく、*レジスタにも入るようにする。

次の設定を有効にすると、通常、「無名レジスタ」に入る、 ヤンク、カットの操作で指定したテキストが、「*レジスタ」にも入るようになります。
「*レジスタ」にデータを入れると、クリップボードにデータが入るので、
vimエディタでヤンク、カットしたテキストを、 他のアプリケーションで即ペーストして使用できることになります。

" 無名レジスタに入るデータを、*レジスタにも入れる。
:set clipboard+=unnamed

注意事項など

vimエディタでクリップボードを使用するには、 vimエディタが「+clipboard」でコンパイルされている必要があります。
vimエディタのコンパイルオプションを確認するには、 vimエディタを起動して次のコマンドを実行してください。

:version
ドキュメントアクション
コメント
blog comments powered by Disqus