1. ホーム
  2. vim

[解決済み] vimでシステムのクリップボードからペースト(とコピー)するには?

2022-03-19 14:14:43

質問

他のエディタと違い、vimはコピーしたテキストを自分のクリップボードに保存します。そのため、ウェブページからテキストをコピーして、現在作業中のファイルにペーストするのは非常に困難です。そのため、geditを開くか、手動で入力する必要があります。

vimでシステムのクリップボードから、またはシステムのクリップボードにペーストできるようにすることはできますか?

解決方法は?

システムのクリップボードからコピー/ペーストする際の注意点 の場合、動作しません。 :echo has('clipboard') は0を返します。 . この場合、vim はコンパイル時に +clipboard という機能があるため、別のバージョンをインストールするか、再コンパイルする必要があります。Linux ディストロによっては、デフォルトで最小限の vim がインストールされていますが、もし をインストールします。 vim-gtk または vim-gtk3 パッケージ それでも、追加機能を手に入れることができます。

"*"+ レジスタは、システムのクリップボード ( :help registers ). システムによって、これらの機能は異なる場合があります。例えば、OSXやWindowsのようなX11を使わないシステム上では "* レジスタは、システムのクリップボードの読み取りと書き込みに使用されます。X11システムでは、両方のレジスタを使用することができます。参照 :help x11-selection を使用することができますが、基本的には "* は、X11の _PRIMARY_ 選択 (通常マウスで選択したものをコピーし、マウスの中ボタンでペーストします) と "+ は、X11の _CLIPBOARD_ を選択します(これはクリップボードそのものです)。

もし、これらのことが頭から離れないのであれば、次のように使ってみてください。 "*yy または "+yy をクリックすると、その行をシステムのクリップボードにコピーすることができます。適切なコンパイルオプションがあれば、どちらか一方は動作するはずです。

これを自分にとってより便利なものにリマップするのもいいかもしれません。例えば vnoremap <C-c> "*y の中に ~/.vimrc を視覚的に選択し、押せるようにします。 Ctrl + c をクリックすると、お使いのシステムのクリップボードに取り込まれます。

また、このような場合は 'clipboard' オプションは :help cb . この場合 :set clipboard=unnamed または :set clipboard=unnamedplus を使用すると、すべてのyank/delete操作が自動的にシステムのクリップボードにコピーされるようになります。これは、クリップボードに他のものを保存している場合、それを上書きしてしまうので、不便になることがあります。

貼り付けるには "+p または "*p (繰り返しますが、お使いのシステムおよび/または目的の選択に応じて)または、これらを他の何かにマッピングすることができます。私はこれらを明示的に入力しますが、しばしば挿入モードになっていることに気づきます。挿入モードの場合でも、以下のようにすれば、適切なインデントで貼り付けることができます。 <C-r><C-p>* または <C-r><C-p>+ . 参照 :help i_CTRL-R_CTRL-P .

また、vimの paste オプション( :help paste ). これは、vim を特別な ペーストモードです。 これにより、ターミナルエミュレータやマルチプレクサでおなじみのペーストのショートカットを使って、vim に簡単にペーストできるようになります。(単純に :set paste で有効にし、コンテンツを貼り付けてから :set nopaste で無効化します)。あるいは pastetoggle オプションで、モードを切り替えるキーコードを設定します ( :help pastetoggle ).

これらのオプションの代わりにレジスターを使うことをお勧めしますが、それでも怖い場合は、vimの腕前を磨く間の便利な回避策になります。

参照 :help clipboard をクリックすると詳細が表示されます。