Vimから直接クリップボードにコピーすることは可能ですか? yy
はVimの内部バッファにものをコピーするだけです。 OSのクリップボードにコピーしたいのですが。そのようなコマンドはVimにありますか、それともあなたはVimの中で物事をヤンクすることしかできませんか?
*
レジスタがこれを行います。 Windowsでは、+
と*
は同等です。 unixでは、+
と*
の間に微妙な違いがあります。
Windowsでは、*と+のレジスタは同等です。しかしX11システムでは、違います。 X11システムでは、*は選択範囲、+はカットバッファ(クリップボードと同様)です。 http://vim.wikia.com/wiki/Accessing_the_system_clipboard
*
はたぶんあなたがたいてい欲しいものです、それで私は*
を使います。
Linuxディストリビューションでは、何らかの理由で、クリップボード機能を得るために最初にvim-gtkをインストールする必要があります。
そして、ヤンクやパッティング時のレジスタの使い方について混乱している人たちのために、あなたは単に"
を書いてからレジスタの名前を書くだけです。クリップボードレジスタに何かをコピーするには"*y
と入力してから"*p
と入力します。
Macの場合 _ osx _
選択した部分をコピーする:テキストを視覚的に選択し(通常モードではv
またはV
と入力)、:w !pbcopy
と入力します。
ファイル全体をコピーする:%w !pbcopy
クリップボードから貼り付ける:r !pbpaste
most Linux Distrosでは、以下のように置き換えることができます。
pbcopy
にxclip -i -sel c
またはxsel -i -b
を付けたものxclip -o -sel -c
またはxsel -o -b
を使用したpbpaste
xsel
とxclip
)のどちらもディストリビューションにプレインストールされていない場合は、おそらくリポジトリにありますあなたのvimrcファイルでは、コピーと貼り付けにシステムのクリップボードを自動的に使うように指定することができます。
Windowsの場合:
set clipboard=unnamed
Linuxでは(vim 7.3.74以降):
set clipboard=unnamedplus
注意:これらが機能するためにはVimの最新版を使う必要があるかもしれません。
システムのクリップボードにコピーするには、レジスタ"+
を使用します(つまり、y
の代わりに"+y
)。
同様に、システムのクリップボードからテキストを取得するために"+
から貼り付けることができます(つまり、p
ではなく"+p
)。
@Jacob Daltonはこれをコメントで述べていますが、vimがここで述べられている提案のいずれかを機能させるためにクリップボードサポート付きでコンパイルされる必要があるという答えで誰も言及していないようです。私のMac OS Xではデフォルトではそのように設定されていなかったので、vimを再構築しなければなりませんでした。このコマンドを使用して、vim --version | grep 'clipboard'
があるかどうかを調べます。 +clipboard
はあなたが良いことを意味し、ここでの提案はあなたのために働くでしょうが、-clipboard
はあなたがvimを再コンパイルし再構築しなければならないことを意味します。
まとめると初心者のためにそれを容易にする、
現在の行をコピーするには、コマンドモードで次のように入力します。
"*yy
ファイル/バッファ全体をコピーするには、コマンドモードで、まずgg
を使って最初に移動してから、つぎのように入力します。
"*yG
すでに述べたように、これにはクリップボードサポートの可用性を示す+clipboard
のうちvim --version
が必要です。-clipboard
はnoを意味します。
クリップボードのシステムにコピーできませんでした。これは〜/ .vimrcファイルにあります。
if has('mouse')
set mouse=a
endif
しかし、この行を次に追加すると、単純にできるようになります。Ctrl+cを選択すると、クリップボードに保存されます。
vmap <C-c> "+y
元の議論と詳細: set mouse = aを有効にしてvimからテキストをコピーする
あなたが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
を使用した場合でも、クリップボードの履歴がめちゃくちゃになることです。これはより良く、より洗練された解決策です。
Vimのテキスト[range]をシステムのクリップボードにコピーします。 (ヒント:範囲を最初に選択するにはv
またはV
を使用し、次にExコマンドをアクティブにするにはコロン:
を入力してください)。:[range]yank +
例えば。、:5,10y *
(5〜10行目をシステムのクリップボードの*
レジスタにコピー/ヤンク)
システムクリップボードの内容を新しい行のvimに貼り付けます。:put +
私にとっての解決策は、クリップボードオプションを含む追加のvimをインストールすることでした。
Sudo apt-get install vim-gnome
Ubuntuの場合 - 2018年7月
システムのクリップボードにコピーするには、レジスタ "+ を使用します(すなわち、 y の代わりに " + y )。
同様に、 "+ から貼り付けてシステムのクリップボードからテキストを取得することもできます(すなわち、 p の代わりに " + p )。
また、vimがクリップボードをサポートするようにコンパイルされていることを確認する必要があります。試してください:
vim --version | grep .xterm_clipboard -o
それが -xterm_clipboard (マイナスの接頭辞)の場合、サポートしています ない 。
これは、クリップボードをサポートしている動作中のバージョンのvimと交換するための説明です。
vim --version | grep .xterm_clipboard -o
で再度チェックして、クリップボードが利用可能になったことを確認できます(例: + xterm_clipboard )。
がんばろう。
GVimを使用している場合は、set guioptions+=a
も使用できます。これにより、ビジュアルモードでハイライトしたテキストが自動的にクリップボードにコピーされます。
欠点:この場合、高度なクリップボードマネージャ(履歴あり)はすべての選択履歴を取得します。
あなたはここで答えを見つけることができます Arch Wiki
Linuxの場合:まず最初にgvim
をインストールしてvimのバージョンでクリップボードを有効にする必要があります。
次に、この行を.vimrc
ファイルに追加する必要があります。
set clipboard=unnamedplus
あなたのvimがデフォルトでDebianのように+xterm_clipboard
オプションなしでコンパイルされていてUbuntuを推測しているのなら、デスクトップクリップボードを扱う外部プログラムにパイプの選択やバッファ全体を渡すことができます。 xclip
(以前にインストールする必要があるかもしれません)の場合、コマンドは:w !xclip -sel clip
になります。
Ubuntuターミナルの下のvimでのみ、
shift + drag mouse
を押してvim内のテキストを選択し、次に端末上でctrl + shift + c
を押します。
他のエディタではctrl + v
Xclipを使っている場合、テキストをクリップボードにコピーする簡単な方法は次のとおりです。
y
コマンド):call system("xclip -selection clipboard", @")
を入力:call system()
は端末コマンドを実行します。それは2つの引数を取ります。1つ目はコマンド、2つ目はそのコマンドにパイプするものです。たとえば、:echom system("head -1", "Hello\nWorld")
はHelloを返します(パディングあり)。 echomはコマンドの出力を返しますが、呼び出しは返しません。
デフォルトのXクリップボードではなく、xclip -selection clipboard
はテキストをシステムクリップボードにコピーするだけです(中央のマウスボタンでアクセス)。
@"
は最後のヤンクテキストを返します。 "がデフォルトのレジスタですが、任意のレジスタを使用できます。すべてのレジスタの内容を表示するには、:registers
と入力してください。
set clipboard=unnamed
をvimrc
に入れてください。Visual
モードで選択します(vを押して入ります)。Normal
モードに戻り(escape [esc]を押す)、yを押してコピーします。Normal
モードでp/Pを押してください。たぶん誰かがそれを役に立つと思うでしょう。私は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
私はVimの初心者ですが、すべてのテキストをシステムのクリップボードにコピーします(たとえば、ワープロやgedit、マウスパッドなどの他のテキストエディタに貼り付けたい場合)。通常モードでは:
ggVGy
または、もっと簡単に言うと
:%y
提案されているように、私も vim-gtk をインストールして
set clipboard = unnamedplus
私の.vimrcに
そしてすべてがうまくいきます
テキストの一部だけをコピーしたい場合は、 ビジュアルモード(v) を使用し、コピーしたいテキストを選択して y を押します。
最後に、私はClipman(私のお気に入り)、Clipit、Parcelliteなどのようなクリップボードプログラムを提案します。
(私はDebian Stretch Xfceでvim 8.0を使っています)
私の英語をお許しください。 :-)
あなたがvimにグラフィカルインタフェースを使用したくない場合、ターミナルエミュレータをそのまま使いたいのなら、この問題へのもっと簡単なアプローチがあるかもしれません。 yankやそのようなものを使う代わりに、まずあなたが使っている端末のドキュメントを見てください。私は同じ問題(+ clipboardやxclipなどを使おうとしている)に苦しんでいました、そして最後に私の端末エミュレータではshiftを押してコピーしたいテキストを選択するだけで十分であることがわかりました。それでおしまい。非常にシンプルで設定をいじる必要はありません。 (私はところでurxvtを使います)。
いくつかの国際キーボードでは、押す必要があるかもしれません。 "+Space "
を取得します。
そのような場合、あなたは押す必要があるでしょう "Space+y または "Space*y
コピーが機能するように、.vimrcに簡単な行を書きました。これが誰かに役立つことを願っています。私のvimは、残念ながらクリップボードのサポートがインストールされていませんので、これらの提案はどれも私にとって役に立ちませんでした。基本的に、この行をあなたの.vimrcに貼り付けてください。
map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>
あなたがこれが何をするかについての詳細を読みたいならば、あなたはこれについて読むことができます 私のブログ
私の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"を使ってコピーして貼り付けることができます。
puTTYを使ってUNIXシステムに接続している場合は、以下の手順に従ってファイルの内容をコピーしてください。
上記の何も私のWindowsのラップトップ上で私のために働いた。
Ctrl+C コピーは大丈夫だった..しかし私は必要 Shift+Insert 貼り付ける!
(いつもラップトップを使う良い理由は Insert 二次キーを押さなくてもいつでもアクセスできます。
私の場合はselecting
とright-click copy
の助けを借りてmouse
を動かしました。
行番号を含めたくないので、copying
の前に:set nonumber
を付けます。
私のインスタンスでは、マウスで強調表示(クリックおよびドラッグ)してテキストを選択すると、vimが視覚モードになりました。
とにかくMacでは、最も簡単な解決策はfn + mouse click and drag
を使用してビジュアルモードに入ることを避けることです。
デフォルトでこの動作を回避したい場合は、vimrcを編集できます
私は今までMacOsXでキーボードショートカットを使って何ヶ月もこれに苦労してきました。私は質問がキーボードショーツを使うことについてではないことを知っています。しかし、これは同じ懸念を持つ人を助けるかもしれません。
あなたがチェックを外した場合、私はそれが見つかりました:
表示 - >マウスレポートを許可
ターミナルメニューから、クリップボードにコピーすることができます。
command + c
再び。