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


84

vimからテキストをコピーして貼り付けようとしています。私がやっているVを、その後、ビジュアルモードに入るように、Y、私は私のブロックを選択したら。

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

回答:


62

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


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

"+y

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

"*y

X11セレクションへのコピー-中間クリックを使用してこのバッファーから貼り付けることができます。

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


@Tshepangそれはパテから動作していません。私は何をすべきか ?
ラーフルパティル

@RahulPatil私は知らない。おそらくスーパーユーザーに別の質問をすることもできます(Windowsのツールであるため、そこで歓迎されます)。
tshepang

@RahulPatil-puttyを使用している場合、ローカルマシンではなくリモートサーバーでファイルを編集しています。一般的に、リモートサーバーはローカルマシンのクリップボードを認識しません。Linuxデスクトップを使用している場合は、X転送を使用してsshを実行できます(サーバーにXライブラリをインストールしている場合)。ただし、Windowsでパテが実行されると、Xが実行されないため転送できません。
ハミッシュダウナー

1
みなさんこんにちは、「+ y」と入力する方法は?ビジュアルモードまたはコマンドモードで入力する必要がありますか?愚かなことですが、私はそれを理解することができません。
AlindBillore 16年

@AlindBillore:コマンドモード。文字通り、キーを押したshift'後、shift=その後、y(当然のシフトを除いて、すべてではない一度次々に)。
リード

31

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

set clipboard=unnamedplus

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

しかし、コマンドdがデフォルトのバッファに操作するテキストを入れるなどのコマンドは、高速ddを実行できず、たとえばインターネットから行を貼り付けることができなかったため、この動作はかなり面倒です。


2
+はクリップボードの登録者です
Kit Ho

1
最後の点に関しては、dd「1行をカットする」という意味なので、これは予想される動作です。まれに、行を忘却に実際に削除したい場合に"_dd、トリックを行います。
user7089 14

また、@ HamishDownerは彼の答えで次のようにvim --version述べてい+xterm_clipboardます。そうでない場合は、追加のパッケージをインストールするか、その機能を追加してvimを再コンパイルする必要があります。
-rudolph9

24

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

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

明確にするために、これはvimなどの端末で実行する場合に機能しxtermます。


テキストを選択するときにShiftキーを押したままにしますか?それは私がそれを行う方法xtermです。
-nozimica

@nozimica:はい。
ループスペース

この答えは...もっとupvotesを持つべきである
whoan

複数行選択の@LoopSpaceをset nu有効にすると、行番号もコピーされます。したがって、おそらくいくつかのショートカットを使用して行番号を切り替えるか、:set nonuすべての選択の前にコマンドを実行する必要があります
スティーブンプリビリンスキー

MACでオプションキーを押しながら、マウスカーソルでテキストを選択します
abreschi

10

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

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

5

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

"+y

非常に直感的です。


使用していgvimますか?
-nozimica

@ nozimica-そう
ripper234

1
Xtermでxtermまたは同様のターミナルエミュレーターで実行されているvimでも利用可能です(vimがこの+xterm_clipboard機能でコンパイルされている場合)。
ジル

3

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

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


何らかの理由で機能しません。ビジュアルモードで選択し、ctrl-shift-Cでコピーし、Ctrl-shift-Vを使用して別のアプリに貼り付けます。テキストはコピーされません。
ripper234

2
@ ripper234:gvimを使用している場合、これは機能しません。crazy2beが言ったように、この機能はターミナルエミュレータからのものです。
リード

@ ripper234:1)端末エミュレーターが提供する機能です(gnome-terminalは1つを提供します)、2)Ctrl + Shift + Vは端末に貼り付けます。GUIアプリは通常どおりCtrl + Vを使用します。答えを編集して、より明確にします。
crazy2be

shift-control mousedrag-テキストを選択すると、1つのバッファウィンドウからのコピーペーストが簡単になります。
ステファン

2

デフォルトでは、vimのライトバージョンをインストールする場合、vimの外部でand レジスタを使用するために必要な+xterm_clipboardvim --version | grep xterm)の機能はありません。*+

有効にするには、vimを自分でコンパイルするか、あらかじめ有効になっているvimのバージョンをインストールする必要があります。私はvim-gnomeを使用しましたsudo apt-get install vim-gnome。あなたが演じればvim --version | grep xterm、それが今だとわかるでしょう+xterm_clipboard

さて、にコピーしようと+し、*それが動作するはずです。


2

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」を使用してコピーと貼り付けができます。



0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.