vimの異なるインスタンス間でデータをコピーする方法は?


41

最初のvimを使用して行を(withでyy)コピーする場合、別の端末のvim(withでp)に貼り付けるにはどうすればよいですか?それを行うことができるコマンドまたは設定はありますか?グローバルシステムのクリップボードにコピーして貼り付けることはできますか?

私は次の方法が可能であることを知っていますが、もっと簡単な方法が欲しいです:

  1. 最初のvimを終了して、2番目のvimを再度開きたくありません。

  2. 別のウィンドウ(で:sp)を使用したくありません。

回答:


49

まず、vimのクリップボード対応バージョンをインストールする必要があります。非グラフィカル環境のユーザー(Ubuntu Serverユーザーなど)に対応し、この機能にフックしないvimvim-tinyください。GVim をインストールする必要GVimをインストールするがあります。これは、グラフィカルまたは端末で起動します。GVimはvimコマンドを置き換えます。

最初のvimから「カットバッファー」にテキストをヤンクしてから、2番目のvimにテキストを貼り付けることができます。グローバルカットバッファにコピーするには、+レジスタを使用します。この"キーを使用すると、ヤンクまたは貼り付け操作を行うときに使用するレジスタを指定できます。

最初のvimで、+レジスタに行をヤンクします。

"+yy

次に、+2番目のvimのレジスタから貼り付けるには:

"+p

使用可能なレジスタの詳細については、をご覧ください:help registers。また"+p、システム上の他のソースからコピーしたテキストを貼り付けるのにも使用できます。


GVimをインストールすると(パッケージはvim-gnomeのような名前になる場合があります)、メニューエントリから、それらが呼び出すキーショートカットが頻繁に表示されます。
-zpletan

1
Gvimをインストールしたくありません。vimでこれを行うにはどうすればよいですか?
trusktr

1
@trusktrは、実際にはvimでも機能します。このQ&Aでは、少なくともvim 7.3.74(Ubuntu 11.10以降を意味する)が必要であると書かれています。
umbric

tmux内でvimを起動し、通常は外部でvimを起動した場合、これはどういうわけか機能しません。この問題を回避する方法を知っている可能性はありますか?
serup

"*yy"*pまた機能します。を:reg
押す

20

私のために働いた最高のソリューション(キーバインドの習慣を変更する必要はありません)はこちらです:https : //stackoverflow.com/questions/9166328/how-to-copy-selected-lines-to-clipboard-in-ヴィム

置くだけ:

set clipboard=unnamedplus

あなたの.vimrc


実際には、set clipboard=unnamedplusGVimをインストールすることと組み合わせて追加する必要がありました。ただし、実際のGVimプログラムの代わりにVimにxfce4-terminalを使用することができました。
jbrock

9

私はビルのソリューションが好きで、マッピングを作成しました:

vmap <leader>y :w! /tmp/vitmp<CR>                                                                   
nmap <leader>p :r! cat /tmp/vitmp<CR>

ビジュアルモードの最初のものはすべて/ tmp / vitmpにコピーし、2番目のものはファイルの/ tmp / vitmpからコンテンツをコピーします


シンプルで簡単な解決策-古い方法-これは私のためにそれをしたおかげで
-serup

これを.vimrcに追加した後にVimで入力する必要があるものは何ですか?
ヴィタリーズダネビッチ

vimを設定して、リーダーキーの後にyを続けてコピーし、リーダーキーの後にpを付けて貼り付けられるようにする必要があります。
サミールサデク

1
これが機能します。"*yサーバー上で使用が壊れているようです
オスパイダー

ああ、私の。dockerのtmuxでvimを使用して、この問題について何時間も探していました。すでに名前のない/名前のないプラスを持っている私の通常のvimrcは、ドッカーのtmuxのvimでは動作しませんでした。インターネットで見つけたものも何もしませんでした。ただし、これはすべてのマシンで動作するようです!Docker、Mac、およびArchでネイティブに。ありがとうございました!!
トミー

5

さまざまなUnixファミリマシン間を移動し、次のシーケンスが常に機能することを発見しました。

ソースviセッション:

  1. ESC m a最初の行をマークするために使用
  2. ESC m b最後の行をマークするために使用
  3. :'a,'b w! xfer範囲をスクラッチファイルに書き出すために使用します

宛先セッション:

  1. カーソルを挿入行に移動します
  2. ESC :r xferテキストで読むために使用

私はそれがきれいではないことを知っていますが、それは私のために常に機能します!


2

実際には非常に簡単ですvim。クリップボードをサポートするバージョンをインストールします。そうでvimない場合は、次のいずれかを取得します。

sudo apt-get install vim-athena
sudo apt-get install vim-gnome
sudo apt-get install vim-gtk

インストールしたら、単に実行しvimます。次を実行して、クリップボードが有効になっていることを確認することもできます。

 vim --version|grep clipboard

表示されるはず+xterm_clipboardです。


この答えは、問題の核心になります。つまり、Vimのバージョンではクリップボード機能が有効になっていますか?そうでない場合、これらの他の答えのどれも違いを生みません。「vim --version」を実行し、「+ clipboard」を探します。+ xterm_clipboardは、X11クリップボードのサポートが必要な場合にのみ適用されると思いますが、Ubuntuを使用している場合はこれも必要になります。
レイ

2

あなたはおそらくこの答えを嫌います。私は80年代にさまざまなUnixコンピューターでviで働いていましたが、最近Linuxで遊ぶ機会がありました。

カットアンドペーストの私のソリューションは、Windowsで実行されているPuttyを使用してLinuxボックスにアクセスすることです。

Puttyでは、単に強調表示するだけで、ウィンドウ内の任意のtxtをコピーできます。その後、別のPuttyウィンドウ/セッションに移動し、右クリックして貼り付けます。

簡単にできませんでした。そして今、vimがあります。あまりにもひどいことでしたが、当時はそうではなかったので、emacsマフィアを防ぐのに役立ちました。


1

yyを正確に使用しているわけではありませんが、マウスでコピーするテキストを選択する場合(Shift- [ドラッグ]を使用する必要がある場合があります)、他のターミナルウィンドウに切り替えて[ミドルクリック]またはShift- [middleクリック]をクリックすると、現在の挿入ポイントにテキストが挿入されます。

これは、vimだけでなく、ほとんどのコマンドラインおよびGUIプログラムで機能します。

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