set mouse = aを有効にしてテキストをVimの外にコピーする


232

を有効にするとset mouse=a、Vimの内部にコピーされたテキストはVimの外部に貼り付けられません。誰かがこれを修正する方法を知っていますか?

ここで、マウスでテキストを選択すると、ビジュアルモードがオンCopyになり、ポップアップメニューのオプションが無効になります。

ここに画像の説明を入力してください


2
あなたのvimがコンパイルされている場合+clipboardmouse=a、あなたは、端末ポップアップメニューを使用せずにVIMへ/から/コピー&ペーストすることができるようになります。clipboardを使用してが有効かどうかを確認できvim --versionます。
ジェローム・Pouiller

@Jezz Worth mouse=aは、A)がコンパイルオプションではないことを明確にします。vimrcにあるものです。B)vimがコンパイルされ+clipboardた場合:set number、オンのときにコピー/貼り付けができ、コピー/貼り付けなしで、おそらくまだいくつかのことを行う必要があります。マッピングC)VIMを自分で再コンパイルする必要はありません。いずれかのOSでサポートされている一部のパッケージマネージャーのvimにある場合があります。osxでは、brewのvimにありますが、osxのデフォルトのvimにはありません。私の答えはこのre osxについて言及しています。
barlop

たぶん、インストールxselもあなたのために作品を、あなたはエディタまたはマウスでテキストを選択して打つことができctrl+c、それはneovimのためのある方法で、テキストをコピーするgithub.com/neovim/neovim/issues/7945#issuecomment-361970165
Naeem Baghi

回答:


426

shiftマウスで選択しながら押します。これにより、マウス選択がmouse=a有効になっていないかのように動作します。

注:このトリックは「中央ボタンの貼り付け」にも適用されshiftます。外部で選択されたvimテキストに貼り付けたい場合は、中央ボタンをクリックしながら押します。挿入モードがアクティブになっていることを確認してください(:set paste予期しない影響を回避することもできます)。

OS X(mac):alt / optionを押しながら(source)を選択


2
OK、これは確かに解決策です。しかし、画面上にない多くのコードを選択したい場合はどうでしょうか?(その後、スクロールして同時に選択する必要があります)
Ozkan

3
<kbd> ctrl </ kbd> + <kbd> shift </ kbd> +マウスの左ボタンを押してブロック選択を開始することにより、ブロック選択を使用するオプションもあります。マウスの中央ボタンで、コピーしたコンテンツを別のウィンドウに貼り付けます。
micrub 2014年

6
(スクリーンショットに示すように)行番号がある場合、Mac OS XでALTを使用して選択すると、行番号もコピーされます。この場合は、ブロック選択モードを選択するときにALT + CMDを使用することをお勧めします。これにより、番号の選択を回避できます。
アーロン

16
Macターミナルの場合、OS X 10.11 El Capitan以降、Fnキーは正しい方法です。つまり、(mouse=a有効にして)Fnキーを押しながらテキストを選択し、次にCMD + Cを使用して、コピーして任意の場所に貼り付けます。
YaOzI 2017

1
その回答に多くの賛成票があるかどうかはわかりません。行番号のコピーを回避するためにマウスサポート有効にした場合、この提案はまったく役に立ちません。
Stelios Adamantidis

49

使用"+y視覚的な選択を行った後。ターミナルのcopyコマンドは実際のコンテンツの代わりにターミナルに表示されるものをコピーするため、とにかく使用しないでください。これは何をするかです:

  • "+Vimに+次の削除、ヤンク、または書き込み用に指定されたレジスタを使用するように指示します。名前+が付けられたレジスターは特殊レジスターであり、X11クリップボード・レジスターです。(他のシステムでは、使用することになり*、代わりに私が思うに、参照:help clipboardして:help x11-selection
  • y これは、以前に指定したレジスターに選択を入れるようにVimに指示するyankコマンドです。

次のようにマッピングできます。

:vmap <C-C> "+y

次に、マウスで何かをハイライトし、押しControl-Cてコピーします。

この機能は、Vimが+xterm_clipboardオプション付きでコンパイルされている場合にのみ機能します。実行vim --versionしているかどうかを確認します。


4
または、おそらく"*yOSによって異なります。
2010年

うまくいきました!ただし、組み合わせはかなり複雑で、実際には4つのボタンがあります。おそらく、他の回答から「シフト」する方法を使用しながら、もう1つをマップする必要があります。
lyuba、2011年

マッピングも完璧に機能します:)今、私はあなたからの回答のうちどれを受け入れたものとしてマークするべきかわかりません:)
lyuba

2
私にとっては、この方法では行番号がコピーされないため、これは受け入れられた回答よりも優れたソリューションです。
Saulo Silva

どう+clipboardですか?そして+clipboardxterm_clipboardオフでどうですか?
barlop

18

.vimrc でset mouse=a使用する代わりにset mouse=r


1
ただし、スクロールは無効になります
Makesh

3
理由を教えてください。一見すると、これは基本的にマウスモードを完全に無効にすることと同じように見えますが、問題ではありません。
ミケル

@Mikel正解、私の回答もご覧ください。JoshLeeの回答も役立つかもしれません
Barlop

残念ながら、これが有効になっている場合は、行番号もコピーされます。
vikin9

17

OSX fnではの代わりに使用してくださいshift


MacOSホストのキーと同等のoptionキーで私のために働いたalt。それはdebian9のリモート端末でしたが。リモートでset mouse=a/ set mouse=rを追加しても機能しませんでした /etc/vim/vimrc
mrtipale 2018年

5

Ubuntuでは、Shiftキーを使用して強調表示されたテキストに対して、VIM内のX-Termコピー&ペーストバインディング(Ctrl-Shift-C&Ctrl-Shift-V)を使用できます。


4

OSX-Macの別のオプションは、チェックを外すView->Allow Mouse Reporting(または⌘-Rを押して切り替える)ことです。これにより、マウス操作とマウス選択を切り替えることができます。これは、それを行うには修飾キーを押し続けます。

行番号のある複数行に関する注意:

私は通常、行番号を有効にしているため、複数の行を選択した場合は、行番号もコピーされます。行番号なしで複数の行をコピーする場合は、番号を無効にして:set nonuから、:set nuコピーが完了した後で再度有効にできます。


1

:set mouse&vimコマンドラインでを使用して、マウスを使用して選択したテキストのコピー/貼り付けを有効にすることができます。マウスの中ボタンを使用するかshiftinsert、貼り付けるだけです。


次に、それを持って:set numberいるときに数字を強調表示します。あまり良くない。それで、あなたは良いことを元に戻しますset mouse=a
barlop

1

vimのコンパイルに使用されたコンパイル設定が問題の一部です。vim --versionこれらを示しています。

OSXでは、デフォルトのVimはあり-clipboard しかし、あなたが必要です+clipboard

OSXでは、macvimを使用できます。あなたはbrew cask install macvim それを行うことができます+clipboard

彼らはあなたが2つのウイルスを持っているでしょう。

~$ ls -l /usr/bin/vim   <--- default vim
-rwxr-xr-x  1 root  wheel  1745984 15 Jul  2017 /usr/bin/vim

~$ ls -l /usr/local/bin/vim   <-- macvim, installed recently via that mentioned brew line. 
lrwxr-xr-x  1 apple  admin  42 16 May 23:32 /usr/local/bin/vim -> /Applications/MacVim.app/Contents/bin/mvim
~$ 

vimを実行するとmacvim 'cos /usr/local/bin/usr/binパスの前にあるはずですが、で確認できますwhich vim

vimを実行する(macvimを実行する)のは問題ありませんが、viをmacvim 'cosにマップすることをお勧めします。そうしないと、viの実行はデフォルトのvimのままになります。rmを使用して書き換えまたは削除し、lnを使用してvi symリンクを再作成できます。「許可されていない操作」エラーなしでこれを行うには、SILを(一時的に)無効にする必要があります。https://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection- sip-aka-rootless-on-macos-os-x

macvimがいる+clipboardで示すように、vim --version

以下は~/.vim/vimrc必要な行だけを使った作業です。

:set mouse=a
:map <leader>c "+y
:map <leader>v "+p

デフォルトのリーダーキーはバックスラッシュです。

私はリーダーキーを使用するべきだという提案を読みました。(確かにコントロールには多くのキーがすでに使用されているため、提案はコントロールを使用しないことでした。それがコマンドキーにも当てはまるかどうかはわかりませんが)。

上記のマッピングを使用 \cすると"+y、+と呼ばれるレジスタからクリップボードにコピーされます。そして\v +として知られているレジスタから貼り付けられます。

つまり、ウィンドウ間で機能するコピー/貼り付けです。

別のOS "*ではなく"+


両方のウイルスが持ってい-xterm_clipboardます。たぶん、+xterm_clipboardある意味で有益かもしれませんが、このソリューションには関係ありません。
barlop

0

Puttyセッションを使用している場合は、選択が自動的にコピーされます。vimで「set mouse = a」オプションを使用した場合、Shift +マウスドラッグを使用して選択すると、テキストが自動的に選択されます。X-termをチェックインする必要があります。



0

スイッチをオフにする方法を誤って説明したset mouse=aところ、質問を読み直したところ、OPがそもそもスイッチをオフにしたくないことがわかりました。とにかく、set mouse=一元的にマウス()をオフにする方法を検索している人のために、ここに私の回答への参照を残します:https : //unix.stackexchange.com/a/506723/194822



0

追加 set clipboard=unnamedあなたへ.vimrc。そのため、すべてのヤンク、削除、変更、および書き込み操作で、名前のないレジスターの代わりにクリップボードレジスター「*」を使用します(マウスに影響するだけではないことに注意してください)。

レジスタ '*'の動作は、プラットフォームと、 vimコンパイル(または、neovim)。

機能しない場合は、で試すことができますがset clipboard=unnamedplus、このオプションはX11システムでのみ意味があります。


-3

ESCモードで、mouse = aに設定すると、マウスを使用してテキストを選択します。これにより、vimのビジュアルモードが有効になります。次に、「y」を押して選択したテキストをヤンクし、「p」を押して任意の場所に貼り付けます。これはvim内でのみ発生します。


いいえ、vimの外に貼り付けた場合は機能しません
barlop
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.