web-dev-qa-db-ja.com

gvim:システムクリップボードへの簡単なコピー

Ubuntu10.10でgVimを使用しています。コピーしたテキストを他のアプリケーションで使用できるように、テキストをシステムクリップボードにコピー(ヤンク)したいと思います。

これは"+yで機能します。しかし、私はそれをyで動作させたいと思っています。

y"+yにマップしようとしましたが、yyが機能しなくなりました("+y"+yが生成されるため)。

:set clipboard=unnamedも試しましたが、これは他の方向でしか機能しません。pで貼り付けることができるシステムクリップボードのテキスト。

26
Georg Jähnig

このコマンドでマップしようとしましたか?

noremap y "+y

?このマッピングには重大な誤りが含まれています。通常モードと視覚モードのみが必要なのに対し、通常モード、視覚モード、およびオペレーター保留モードでyをマップします。以下を使用してください。

nnoremap y "+y
vnoremap y "+y

set clipboard=unnamedplusも試してください(少なくともvim-7.3.74が必要です)。 set clipboard=unnamedは両方向で機能しますが、クリップボードレジスタ(*)とは異なる"マウス"(+)レジスタを設定します。

13
ZyX

ほとんどのオンラインソリューションは、y"+yにマップするように指示するだけです。しかし、問題は"+yが機能しないこともあります。 vimがコンパイルされている機能を確認する必要があります。

以下の手順を試してください。

  1. ターミナルを開き、vim –-version | grep xterm_clipboardを実行します
  2. xterm_clipboardの前の記号を確認し、+(プラス記号)の場合は、手順4に進みます。
  3. -(マイナス記号)の場合は、Sudo apt-get install vim-gnome、次にSudo update-alternatives –config vimを実行し、リストからvim.gnomeを選択します(システムに対応する適切なコマンドを使用する必要があります)。コマンドvim –-version | grep xterm_clipboardをもう一度実行すると、+(プラス記号)を取得できるはずです。
  4. システムクリップボードがvimの+(プラス記号)または*(スター記号)レジスタを使用しているかどうかを確認します。これは、使用しているOSによって異なり、同等の場合もあります。確認方法は?ランダムなテキストをコピーしてから、vimを開いて:regと入力し、コピーした文字列がどのレジスタに表示されているかを確認します。 +(プラス記号)の場合は、set clipboard=unnamedplus.vimrcに追加します。 *(星座)の場合は、set clipboard=unnamedを追加します。
  5. それをテストします。 vim内に何かをコピーしてから、:regと入力して、システムクリップボードが変更されているかどうかを確認します。含まれている場合は、vimの外に貼り付けると、そのレジスタにあるものはすべて取得されます。
12
Rui Liu

私はあなたとまったく同じ考えを持っていますが、私は何年もそれをしました。

nnoremap yy yy"+yy
vnoremap y ygv"+y

ここで、yyコマンドは2つのことを行うことに注意してください。最初に通常どおり登録するためにヤンクし、次に"レジスタ(システムクリップボード)にヤンクします。 yコマンドも同じことをします。これは、Vimの複数のクリップボード機能を維持したいためです。

システムクリップボードからの貼り付けには、以前はnoremap gp "+p(グローバル貼り付け)を使用していましたが、現在は優れたプラグインYankringを使用しています。

3
tungd

ビジュアルモード でテキストを選択すると、システムクリップボードに挿入されます(中クリックして貼り付けると、正確な名前を思い出せません)。

もし、あんたが set mouse=a他の多くのアプリケーションと同じように、マウスを使用して視覚的に選択できます。

2
marcog

私の場合、gvimからシステムクリップボードにコピーできる場合とできない場合があります。根本的な問題はわかりませんが、回避策を見つけました。別のアプリケーション(Windows 7を使用している場合のメモ帳など)でテキストをコピーすると、gvimからテキストをコピーして別の場所に貼り付けることができます。 gvimからのコピーごとにこれを行う必要があるようです。

0
Paul Lynch