web-dev-qa-db-ja.com

Vimでクリップボードにコピーするにはどうすればいいですか?

Vimから直接クリップボードにコピーすることは可能ですか? yyはVimの内部バッファにものをコピーするだけです。 OSのクリップボードにコピーしたいのですが。そのようなコマンドはVimにありますか、それともあなたはVimの中で物事をヤンクすることしかできませんか?

645
Hari Menon

*レジスタがこれを行います。 Windowsでは、+*は同等です。 unixでは、+*の間に微妙な違いがあります。

Windowsでは、*と+のレジスタは同等です。しかしX11システムでは、違います。 X11システムでは、*は選択範囲、+はカットバッファ(クリップボードと同様)です。 http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*はたぶんあなたがたいてい欲しいものです、それで私は*を使います。

Linuxディストリビューションでは、何らかの理由で、クリップボード機能を得るために最初にvim-gtkをインストールする必要があります。

そして、ヤンクやパッティング時のレジスタの使い方について混乱している人たちのために、あなたは単に"を書いてからレジスタの名前を書くだけです。クリップボードレジスタに何かをコピーするには"*yと入力してから"*pと入力します。

446
Gabe Moothart

Macの場合 _ osx _

  • 選択した部分をコピーする:テキストを視覚的に選択し(通常モードではvまたはVと入力)、:w !pbcopyと入力します。

  • ファイル全体をコピーする:%w !pbcopy

  • クリップボードから貼り付ける:r !pbpaste

most Linux Distrosでは、以下のように置き換えることができます。

  • 上記のpbcopyxclip -i -sel cまたはxsel -i -bを付けたもの
  • xclip -o -sel -cまたはxsel -o -bを使用したpbpaste
    - 注: これらのツール(xselxclip)のどちらもディストリビューションにプレインストールされていない場合は、おそらくリポジトリにあります
297
Brian

あなたのvimrcファイルでは、コピーと貼り付けにシステムのクリップボードを自動的に使うように指定することができます。

Windowsの場合:

set clipboard=unnamed

Linuxでは(vim 7.3.74以降):

set clipboard=unnamedplus

注意:これらが機能するためにはVimの最新版を使う必要があるかもしれません。

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

142
Gary Willoughby

システムのクリップボードにコピーするには、レジスタ"+を使用します(つまり、yの代わりに"+y)。

同様に、システムのクリップボードからテキストを取得するために"+から貼り付けることができます(つまり、pではなく"+p)。

114
Amardeep AC9MF

@Jacob Daltonはこれをコメントで述べていますが、vimがここで述べられている提案のいずれかを機能させるためにクリップボードサポート付きでコンパイルされる必要があるという答えで誰も言及していないようです。私のMac OS Xではデフォルトではそのように設定されていなかったので、vimを再構築しなければなりませんでした。このコマンドを使用して、vim --version | grep 'clipboard'があるかどうかを調べます。 +clipboardはあなたが良いことを意味し、ここでの提案はあなたのために働くでしょうが、-clipboardはあなたがvimを再コンパイルし再構築しなければならないことを意味します。

66
gkb0986

まとめると初心者のためにそれを容易にする、

現在の行をコピーするには、コマンドモードで次のように入力します。

"*yy

ファイル/バッファ全体をコピーするには、コマンドモードで、まずggを使って最初に移動してから、つぎのように入力します。

"*yG

すでに述べたように、これにはクリップボードサポートの可用性を示す+clipboardのうちvim --versionが必要です。-clipboardはnoを意味します。

52
ryenus

クリップボードのシステムにコピーできませんでした。これは〜/ .vimrcファイルにあります。

 if has('mouse')
   set mouse=a
 endif

しかし、この行を次に追加すると、単純にできるようになります。Ctrl+cを選択すると、クリップボードに保存されます。

vmap <C-c> "+y

元の議論と詳細: set mouse = aを有効にしてvimからテキストをコピーする

23
jcarballo

あなたがMAC OSXでvimを使っているなら、残念ながらそれはより古いバージョンで来て、そしてクリップボードオプションに従わなかった。幸いなことに、自作は簡単にこの問題を解決することができます。

vimをインストールしてください:

brew install vim --with-lua --with-override-system-vim

vimのgui verionをインストールしてください:

brew install macvim --with-lua --with-override-system-vim

端末を再起動して有効にします。


〜/ .vimrcに次の行を追加
set clipboard=unnamed

これでyyを使ってvimの行をコピーしてシステム全体に貼り付けることができます。



更新方法

私は何年もセットクリップボードの方法に満足していませんでした。最大の欠点は、削除にxを使用した場合でも、クリップボードの履歴がめちゃくちゃになることです。これはより良く、より洗練された解決策です。

  1. Vimのテキスト[range]をシステムのクリップボードにコピーします。 (ヒント:範囲を最初に選択するにはvまたはVを使用し、次にExコマンドをアクティブにするにはコロン:を入力してください)。
    :[range]yank +
    例えば。、
    :5,10y *(5〜10行目をシステムのクリップボードの*レジスタにコピー/ヤンク)

  2. システムクリップボードの内容を新しい行のvimに貼り付けます。
    :put +

20
anonymous

私にとっての解決策は、クリップボードオプションを含む追加のvimをインストールすることでした。

Sudo apt-get install vim-gnome
18
alex

Ubuntuの場合 - 2018年7月

システムのクリップボードにコピーするには、レジスタ "+ を使用します(すなわち、 y の代わりに " + y )。

同様に、 "+ から貼り付けてシステムのクリップボードからテキストを取得することもできます(すなわち、 p の代わりに " + p )。

また、vimがクリップボードをサポートするようにコンパイルされていることを確認する必要があります。試してください:

vim --version | grep .xterm_clipboard -o 

それが -xterm_clipboard (マイナスの接頭辞)の場合、サポートしています ない

これは、クリップボードをサポートしている動作中のバージョンのvimと交換するための説明です。

  • $ Sudo apt-get purge vim
  • $ Sudo apt-get autoremove(システムから余分なvim依存関係パッケージを削除します)
  • $ Sudo apt-getインストールvim-gnome

vim --version | grep .xterm_clipboard -oで再度チェックして、クリップボードが利用可能になったことを確認できます(例: + xterm_clipboard )。

がんばろう。

16
arcseldon

GVimを使用している場合は、set guioptions+=aも使用できます。これにより、ビジュアルモードでハイライトしたテキストが自動的にクリップボードにコピーされます。
欠点:この場合、高度なクリップボードマネージャ(履歴あり)はすべての選択履歴を取得します。

14
Benoit

あなたはここで答えを見つけることができます Arch Wiki

Linuxの場合:まず最初にgvimをインストールしてvimのバージョンでクリップボードを有効にする必要があります。


次に、この行を.vimrcファイルに追加する必要があります。

set clipboard=unnamedplus

10
HOuadhour

あなたのvimがデフォルトでDebianのように+xterm_clipboardオプションなしでコンパイルされていてUbuntuを推測しているのなら、デスクトップクリップボードを扱う外部プログラムにパイプの選択やバッファ全体を渡すことができます。 xclip(以前にインストールする必要があるかもしれません)の場合、コマンドは:w !xclip -sel clipになります。

10
Hnatt

Ubuntuターミナルの下のvimでのみ、

shift + drag mouseを押してvim内のテキストを選択し、次に端末上でctrl + shift + cを押します。

他のエディタではctrl + v

8

Xclipを使っている場合、テキストをクリップボードにコピーする簡単な方法は次のとおりです。

  1. コピーしたいヤンクテキスト。 (Vanilla vimのyコマンド)
  2. :call system("xclip -selection clipboard", @")を入力

:call system()は端末コマンドを実行します。それは2つの引数を取ります。1つ目はコマンド、2つ目はそのコマンドにパイプするものです。たとえば、:echom system("head -1", "Hello\nWorld")はHelloを返します(パディングあり)。 echomはコマンドの出力を返しますが、呼び出しは返しません。

デフォルトのXクリップボードではなく、xclip -selection clipboardはテキストをシステムクリップボードにコピーするだけです(中央のマウスボタンでアクセス)。

@"は最後のヤンクテキストを返します。 "がデフォルトのレジスタですが、任意のレジスタを使用できます。すべてのレジスタの内容を表示するには、:registersと入力してください。

6
John AZ1
  1. set clipboard=unnamedvimrcに入れてください。
  2. コピーしたいものをVisualモードで選択します(vを押して入ります)。
  3. Normalモードに戻り(escape [esc]を押す)、yを押してコピーします。
  4. もしOSのクリップボードから何かを貼り付けたいのなら、Vim Normalモードでp/Pを押してください。
4
BigPa

たぶん誰かがそれを役に立つと思うでしょう。私はXクリップボードから独立した状態を保ちたまま、2つの実行中のvimの間でテキストをコピーして貼り付けることができるようにしたかったのです。この小さなコードは、コピーするために選択したテキストをtemp.txtファイルに保存します。下記のコードをあなたの.vimrcに入れてください。仕事をするためにCTRL-c CTRL-vを使用してください。

vnoremap:w!cp/dev/null〜/ temp.txt && cat>〜/ temp.txt

noremap:r!cat〜/ temp.txt

4
user4897781

私はVimの初心者ですが、すべてのテキストをシステムのクリップボードにコピーします(たとえば、ワープロやgedit、マウスパッドなどの他のテキストエディタに貼り付けたい場合)。通常モードでは:

ggVGy

または、もっと簡単に言うと

:%y

提案されているように、私も vim-gtk をインストールして

set clipboard = unnamedplus

私の.vimrcに

そしてすべてがうまくいきます

テキストの一部だけをコピーしたい場合は、 ビジュアルモード(v) を使用し、コピーしたいテキストを選択して y を押します。

最後に、私はClipman(私のお気に入り)、Clipit、Parcelliteなどのようなクリップボードプログラムを提案します。

(私はDebian Stretch Xfceでvim 8.0を使っています)

私の英語をお許しください。 :-)

3
Bertrando Goio

あなたがvimにグラフィカルインタフェースを使用したくない場合、ターミナルエミュレータをそのまま使いたいのなら、この問題へのもっと簡単なアプローチがあるかもしれません。 yankやそのようなものを使う代わりに、まずあなたが使っている端末のドキュメントを見てください。私は同じ問題(+ clipboardやxclipなどを使おうとしている)に苦しんでいました、そして最後に私の端末エミュレータではshiftを押してコピーしたいテキストを選択するだけで十分であることがわかりました。それでおしまい。非常にシンプルで設定をいじる必要はありません。 (私はところでurxvtを使います)。

2
alagris

いくつかの国際キーボードでは、押す必要があるかもしれません。 "+Space "を取得します。

そのような場合、あなたは押す必要があるでしょう "Space+y または "Space*y

2
Arthur F

コピーが機能するように、.vimrcに簡単な行を書きました。これが誰かに役立つことを願っています。私のvimは、残念ながらクリップボードのサポートがインストールされていませんので、これらの提案はどれも私にとって役に立ちませんでした。基本的に、この行をあなたの.vimrcに貼り付けてください。

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

あなたがこれが何をするかについての詳細を読みたいならば、あなたはこれについて読むことができます 私のブログ

2
songz

私の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"を使ってコピーして貼り付けることができます。

1

puTTYを使ってUNIXシステムに接続している場合は、以下の手順に従ってファイルの内容をコピーしてください。

  • コピーしたいテキストをハイライト表示します(ページごとにコピーできます)。
  • ctrl + Cを押す(テキストがクリップボードにコピーされます)
  • 任意の外部エディタに貼り付ける
1
Pratik

Shift+Ctrl+C Linuxのグラフィカルモードを使用している場合は、まずコピーするものを選択する必要があります。

enter image description here

0
prosti

上記の何も私のWindowsのラップトップ上で私のために働いた。

Ctrl+C コピーは大丈夫だった..しかし私は必要 Shift+Insert 貼り付ける!

(いつもラップトップを使う良い理由は Insert 二次キーを押さなくてもいつでもアクセスできます。

0
SherylHohman

私の場合はselectingright-click copyの助けを借りてmouseを動かしました。

行番号を含めたくないので、copyingの前に:set nonumberを付けます。

0
Akash

私のインスタンスでは、マウスで強調表示(クリックおよびドラッグ)してテキストを選択すると、vimが視覚モードになりました。

とにかくMacでは、最も簡単な解決策はfn + mouse click and dragを使用してビジュアルモードに入ることを避けることです。

デフォルトでこの動作を回避したい場合は、vimrcを編集できます

0
MochiJump

私は今までMacOsXでキーボードショートカットを使って何ヶ月もこれに苦労してきました。私は質問がキーボードショーツを使うことについてではないことを知っています。しかし、これは同じ懸念を持つ人を助けるかもしれません。

あなたがチェックを外した場合、私はそれが見つかりました:

表示 - >マウスレポートを許可

ターミナルメニューから、クリップボードにコピーすることができます。

command + c

再び。

0
GO'