vimエディタからクリップボードを利用する。
アプリケーション間のデータの受け渡しには、 クリップボードという仕組みがよく利用されています。 クリップボードを経由してデータを共有することにより、 仕組みの違う各アプリケーションで、それぞれの得意能力を活かした データの編集が可能になります。 当然、vimエディタでも、クリップボードを使用して 他の専用アプリケーションで作成したデータを再編集したり、 あるいは、vimエディタのパワフルな編集能力で作成したテキストデータを 他のアプリケーションに渡すことができます。 (Windows, Mac)
概要
アプリケーション間のデータの受け渡しには、
クリップボードという仕組みがよく利用されています。
クリップボードを経由してデータを共有することにより、
仕組みの違う各アプリケーションで、それぞれの得意能力を活かした
データの編集が可能になります。
当然、vimエディタでも、クリップボードを使用して
他の専用アプリケーションで作成したデータを再編集したり、
あるいは、vimエディタのパワフルな編集能力で作成したテキストデータを
他のアプリケーションに渡すことができます。
ショートカットキー入力によるクリップボードの操作
まず、何の知識も持たない方が 最も簡単にクリップボードのデータを扱う方法を紹介します。
Windows環境
Windows環境のvimエディタでは、次のコマンドでクリップボードのデータを操作できます。
この操作は、ノーマルモード、入力モード、コマンドラインモード、ビジュアルモード、
検索と全ての操作で使用可能です。
- Control キー + Insert キーでコピー
- Control キー + Delete キーでカット
- Shift キー + Delete キーでカット
- Shift キー + Insert キーでペースト
コピーする範囲、カットする範囲は、ビジュアルモードで選択したテキストの範囲となります。
キー入力 | 機能 | 説明 |
---|---|---|
Control-Insert | コピー | ビジュアルモードで選択したテキストをコピー。コピーしたテキストはクリップボードに入る。 |
Control-Delete | カット | ビジュアルモードで選択したテキストをカット。カットしたテキストはクリップボードに入る。 |
Shift-Delete | カット | ビジュアルモードで選択したテキストをカット。カットしたテキストはクリップボードに入る。 |
Shift-Insert | ペースト | クリップボードのテキストをペースト。 |
Mac OSX環境
Mac OSX環境のvimエディタでは、
通常のアプリケーションのコピー、カット、ペーストの操作と同じ操作で、
コピー、カット、ペーストができます。
ノーマルモード、入力モード、コマンドラインモード、ビジュアルモード、
検索と全ての操作で使用可能です。
- Command キー + c キーでコピー
- Command キー + x キーでカット
- Command キー + v キーでペースト
キー入力 | 機能 | 説明 |
---|---|---|
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
Recent Comments
ありがとうございます!
http://nanasi.jp/articles/howto/editing/visualcursor-endtoend.html · 7 years ago
知りませんでした。有難うございました。
http://nanasi.jp/articles/howto/file/open-with-format.html · 9 years ago
<c-f>1ページ分、下にスクロールする<c-b>1ページ分、上にスクロールする
どっちも逆です。
http://nanasi.jp/articles/howto/user-manual/user-manual-motion.html · 10 years ago
set 使用時に : で閉じるのを忘れて右往左往してました。
http://nanasi.jp/articles/howto/file/modeline.html · 10 years ago
やっぱり日本語の方が早いっす。
http://nanasi.jp/articles/howto/help/help_ja.html · 11 years ago