Vimでクリップボードを使う
Vimにでのクリップボードの使い方のメモです。"+
レジスタと"*
レジスタを使うことで、guiのクリップボードとやり取りできます。xsel
といったものは不要です。筆者の環境はNeoVimですが、通常のVimでも同じだと思います。
環境:LMDE 4、NeoVim v0.3.4
ちなみに、macOSは、"+
レジスタを使わなくても、"*
レジスタだけで同じことができます。Linuxは、X Windows SystemのX selectionというものを使っているため、"*
と"+
を使い分ける必要がるようです。詳細は、【Linux】クリップボードについて【X Window System】をご覧ください。
vimからクリップボードへ
ノーマルモード時に、"+
を使うことで、カレント行をクリップボードに渡せます。ヴィジュアルモードで範囲選択をした場合も同じ操作です。
カレント行をクリップボードにコピー
"+yy
ファイル末までをクリップボードにコピー
"+yG
gg
で先頭に戻ってから行うとファイルすべてがコピーされます。
範囲指定してクリップボードにコピー
カレント行から5行目までの範囲をコピー
"+5yy
カレント行からブロックの終了までをコピー。
"+]]
クリップボードからvimへ
クリップボードの内容をvimで使うには、*
レジスタを使います。
"*p
exコマンドでペーストを使う
exコマンドでペーストすることができます。ペーストできるのは、ヤンクされたものと、検索した文字列です。exコマンドでペーストを使うには、<C-r>
を入力した後"
、*
、/
を入力します。
:%s/<C-r>"/<C-r>*/
上記をコピー実行すると以下のようになります。
:%s/printf/puts/
なお、検索した文字列は/
でペーストできます。これは、/
や?
だけではなく、カーソルがワード上にあるときに*
を押しても/
に格納されます。ただし、その場合は、\<printf\>
と<>がついてしまいます。
:%s/<C-r>//s<C-r>//
:%s/printf/sprintf/
更新情報
- 作成日:2020-04-06
- 更新日:2022-04-30