web-dev-qa-db-ja.com

vimからシステムクリップボードにコピーできません

タイトルで述べたように、vimからシステムクリップボードにコピーすることはできません。 Viceversaは動作します。外部のvimからコピーし、pで貼り付けても問題ありません。

クリップボードサポートをインストールしました。vimバージョンは7.3.429です。

$ vim --version | grep clip
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+xsmp_interact +xterm_clipboard -xterm_save 

私は持っています:

set clipboard=unnamedplus

私の.vimrcで、それは私がするときに設定されます:

set clipboard?

または

:echo has('clipboard')

Ubuntu 12.04 LTS、およびgnome-terminal内のvimを使用しています(GVimにも同じ問題があります)。何か案が?

ありがとう

53
gc5

これは私のために働くものです(Ubuntu 13.10):

Vimをvim-gtkとして再インストールします。

Sudo apt-get install vim-gtk

マウスを使用して必要なものを選択し、と入力してクリップボードにコピーします

"+y

クリップボードからvimに貼り付けるにはタイプ:

"+p

理由はわかりませんが、vim --versionの出力を比較すると、通常のvimインストールはvim-gtkと比較してかなり制限されていることがわかります。 vimをvim-gtkに置き換えても、プラグには影響しませんでした。


さらに詳しい情報:

85
Raffael

この質問を検索する他の人にとって重要である可能性があるため、元の答えを以下に残します。

要するに、すべての答えに適合するサイズではないようですが、「set clipboard = unnamedplus」を使用すると、「* p」または「+ p」のいずれかが「システム」クリップボードから機能するはずです。

「* p」はほぼ間違いなくあなたが望むものです。 ( ここから


vimはcliプログラムです。 gnome-terminal(または任意のターミナルエミュレーター)内で使用する場合、crtl + c(または任意のキーの組み合わせ)は最初にターミナルエミュレーター、次にシェル、最後にプログラム(この場合はvim)によって処理されます。 ctrl + cは実行中のタスクにSIGINTシグナルを送信するため、vimとctrl + cはほとんど確実に機能しません。 vimはSIGINTを使用して、挿入モードの中止や検索機能の停止など、他のことを停止します。

言い換えると。 Ctrl + Cが実際にVIMに渡されることはありません。 SIGINTはVIMに渡されます。 SIGINTにはvimの他の用途があるため、コピーに使用することはおそらく機能しません(そして、たとえそれを強制することができても、良い考えではありません)。

代わりに、Ctrl + Shift + CおよびCtrl + Shift + Vを使用してみてください(他にもありますが、システムクリップボードにテキストを入れると思います)

公平を期すために、私はgvimについてあまり知りません。

6
coteyr

Vimrcで使用します。

set mouse=a

マウスで手動で選択してコピーできるようになります。

5
Sergio Abreu

受け入れられた答え に加えて、SSH経由でリモートで作業している場合(たとえば、コピーするtmuxプロセスが異なる複数のペインでvimを使用している場合) vimxterm-clipboardを使用して異なるプロセス間をインターフェースするため、Xディスプレイをエクスポートします。 Xディスプレイを設定するには、次を実行します

export DISPLAY=:0.0

これは、実行する必要がありますbeforevimを起動し、他のシェルの下で実行します。

3
Yusuf Gören

Ubuntu 16.04でvim-gui-commonが機能するためには、"+yがインストールされている必要があります。

1
Carlos Torchia