web-dev-qa-db-ja.com

vimから外部プログラムにテキストをコピーする方法は?

Vimからテキストをコピーして貼り付けようとしています。私はvを実行してビジュアルモードに入り、ブロックを選択したらyを実行しています。

Pが貼り付けるため、テキストをvimのクリップボードにコピーしているようです。ただし、別のプログラム(Chromeなど)では、右クリック->貼り付けで正しいテキストが貼り付けられません。テキストを正しいクリップボードにコピーするにはどうすればよいですか?

91
ripper234

以下は、vim --version+xterm_clipboard機能があることを示している場合にのみ機能します。そうでない場合は、追加のパッケージをインストールするか、その機能を追加してvimを再コンパイルする必要があります。


これには実際には2つのオプションがあります。

"+y

「通常の」クリップボードバッファーにコピーします(Ctrl + Vを使用して貼り付け、右クリックして[貼り付け]を選択できるなど)。

"*y

x11セレクションにコピーします-中クリックでこのバッファから貼り付けることができます。

"*"+は両方の方法で機能することに注意してください。したがって、別のアプリケーションでテキストを選択した場合は、"*pを使用してそれをvimに貼り付けることができます。テキストをコピーした場合(たとえば、Ctrl-Cを使用)は、"+pを使用してvimに貼り付けることができます。

70
Hamish Downer

Vim> = 7.3.74を使用している場合は、これを実際にvimrcに配置できます。

set clipboard=unnamedplus

デフォルトで自動的に+バッファー(システムクリップボード)を使用します。次に、ヤンク(コピー)するには、通常のyコマンドなどを使用します。

ただし、dのようなコマンドが操作するテキストをデフォルトのバッファーに入れるため、この動作はかなり厄介であることがわかりました。つまり、高速なddを実行して行を貼り付けることができませんでした。たとえばインターネットから。

35
Reid

Shiftキーを押しながらキーを押し、マウスカーソルでテキストを選択します。
テキストがクリップボードにコピーされます。

これは、クリップボードをvimにfromを貼り付ける場合にも機能します。

明確にするために、これはvimなどのターミナルで実行されているxtermで機能します。

31
Andrew Stacey

標準の"+gPおよび"+yコマンドを使用するのは非常に難しいと思います。クリップボードにヤンクするためにCtrl-Yを再マップし、クリップボードから貼り付けるにはCtrl-Pを再マップしました。これを.vimrcに追加

nnoremap <C-y> "+y
vnoremap <C-y> "+y
nnoremap <C-p> "+gP
vnoremap <C-p> "+gP
11

気にしないで、私は答えを見つけました-それはvimのメニューに書かれています。

"+y

非常に直感的です。

6
ripper234

Vim固有ではない回答を追加するだけです:Ctrl+Shift+Cを使用して、Ubuntuのシステムクリップボードにコピーできます(ターミナルエミュレーターによって機能が提供されている場合は、gnome-terminalが提供します)。 Ctrl+Shift+Vは別の端末ウィンドウに貼り付け、通常のCtrl+VはGUIアプリに貼り付けます。

さらに、ターミナルでテキストを選択して中央クリックすると、X11クリップボードから貼り付けられます。

4
crazy2be

Shiftキーを押しながらテキストをマウスで選択してコピーします。

次に、CTRL + vを使用して他のプログラムに貼り付けます。

私のUbuntu 16.04のターミナルで動作します。 gvimやその他のシステムについては不明です。

enter image description here

4
Andrzej Rehmann

Vimがクリップボードをサポートしていないことを確認したところ:

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Vim-gnomeをインストールしてからもう一度確認しました

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

これで、それぞれ「+ y」と「+ p」を使用してコピーと貼り付けを行うことができます。

3

デフォルトでは、vimのライトバージョンをインストールする場合、+xterm_clipboardおよびvim --version | grep xtermを使用するために必要な*機能が(+)にありません。 vimの外で登録します。

これを有効にするには、自分でvimをコンパイルするか、あらかじめ有効になっているバージョンのvimをインストールする必要があります。私はvim-gnome:Sudo apt-get install vim-gnomeを使用しました。 vim --version | grep xtermを実行すると、現在は+xterm_clipboardであることがわかります。

次に、+*にコピーしてみます。

2
laughing_man

追加のために、何かがうまくいった場合は、vimをラップするターミナルを切り替えてみてください(ターミナルからvimを使用している場合)。たとえば、クリップボードにはgnome-terminalからアクセスできますが、guakeからはアクセスできないことがわかりました。

0
gc5