たけっぱ横丁

the technical document for Vim(Editor), Natural Language Proecssing(NLP) tools and Programming(Python, Ruby, C++ etc).

Vim Tips @001 [ Vimでクリップボードを利用する3つの方法]

vimのclipboard設定

Vimではregisterとして[0-9a-z".=*+]がレジスタとして使える。 うちシステムのクリップボードと共通のレジスタがある.

"*(primary) と"+(clipboard) である。(:h clipboard) 難しい話は割愛.

2つの違いは, (X11環境下のみ, Windowsでは下記の役割が反転)

  • "* : 中身をVimが管理, vimで選択(ビジュアルモード)すると上書きされる.
  • "+ : 中身をシステムが管理, yank, deleteで上書きできる.

ぐらいの認識で大体構わないと思う. 詳細は(:h "*)

記事の目的としては他のアプリケーションでコピペしたものをvimでも使いたいというのが本筋。 3つぐらい手法がある。

1. コマンドからレジスタを指定して貼り付ける.

ノーマルモードの操作で行う.(yank, paste, deleteのコマンドでレジスタを指定)

"+yy  
"+dd
"+p
"*yy  
"*dd
"*p

2. ショートカットキーを利用する

Shift + Insで貼り付け可能. (ただし, insertモードで行うこと) autoindent等が設定されていると、インデントが崩れることがある. そんな時はpasteオプションを利用する(:h paste)

set pastetoggle

でpasteモードに移れる.

3. clipboard オプションを利用する( +clipboard が 必要)

よくunnamedとかautoselectionしている人が多数の模様. Windows環境とUnix[X11]環境でいろいろと設定がややこしいことになっている.

なので下記を.vimrcに書き込む.

if has('unnamedplus') && !(has("win32") || has("win64"))
    set clipboard=unnamedplus,autoselectplus
else
    set clipboard=unnamed
endif