vim cut&pasteがStretch / Debian 9で機能しない


33

ここでいくつかのVMサーバーをDebian 9にアップグレードしました。

を使用する場合ssh、リモート端末間でコピーアンドペーストすることはできません。

カーソルは、通常よりも面白い/異なる方法ではありますが、動きをしてテキストをマークしているようですが、command-C / command-Vを実行するか、それぞれのメニューでコピーして貼り付けると、クリップボードにコピーされません。

また、Shiftと他のキーボードの組み合わせでマウスを動かしてみましたが、良い結果は得られませんでした。

これは、OS / X、つまりSierraとEl Capitan、およびWindowsでmobaXterm端末も使用して発生しています。

この状況は、vimがマウスを持っていることを認識しているためです。

スタックオーバーフローの他の質問に続いて、私が作成した/etc/vim/vimrc.localset mouse="r"してset mouse="v、うまくいきませんでした。

最後にset mouse=""同じファイルでセットアップし、ある程度の成功を収めました。

ただし、100%の時間でもうまく機能しません。他に何ができますか?


なぜマウスのサポートをオフにしたいのですか?Windowsでは、パテセッションで問題なくコピーして貼り付けることができます。Macでどのターミナルエミュレータを使用していますか?
アレクセイマグラ

3
通常のターミナル+デフォルトで提供されるsshバイナリ。2人の同僚が不満を言っています...それらはヘッドレス仮想サーバーで、すべてがテキストモードのみです。カット&ペーストが適切に機能しないことは、私たちにとって大きな問題です。
ルイFリベイロ

iTerm2のようなものを使用することをお勧めします。AppleStoreで入手できるレトロな用語とは別に使用した唯一のターミナルエミュレーターだと思います。ただし、画面の選択をコピーできるはずです。しかし、私は端末からシステムにがらくたをコピーしようとすると問題があることをかすかに覚えています。ために。
アレクセイマグラ

2
たぶん誰かがmouse=モードを取り戻すためにこの変更を取り消すリクエストを提出することができます(debianで?)。
ステフェン

回答:


37

実際、解決策は、オプションmouse=aをに設定することmouse=rです。

/usr/share/vim/vim80/defaults.vim受け入れられた答えが示すように、これを設定する際の問題は、すべての更新で上書きされることです。私は長い間検索して、これで終わった:https : //bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

最初の方法の解決策は、ローカルの.vmrcファイルを使用してそこに設定することです。 したがって~/.vimrc、すべてのユーザーに対してローカルの.vimrc()を作成し、そこでオプションを設定できます。または、作成する/etc/skel新しいユーザーごとに自動的に作成されるように作成します。

ローカル.vmrcファイルを使用する場合でも、あなたは地元がある場合ので、そこにすべてのオプションを設定する必要があり.vimrcdefaults.vimすべてではロードされません!そして、ローカルがない場合、.vimrcすべての設定はから上書きされdefaults.vimます。

すべてのユーザーに対してグローバル構成が必要でした。この構成では、既定のオプションが読み込まれ、個人設定で既定が追加または上書きされます。幸いなことに、Debianにはそのオプションがあります:はの/etc/vim/vimrc.local後にロードされます/etc/vim/vimrc。そのため、このファイルを作成してデフォルトをロードし、再びロードされないようにして(最後に)、個人用オプションを追加できます。

次のファイルを作成してください: /etc/vim/vimrc.local

" This file loads the default vim options at the beginning and prevents
" that they are being loaded again later. All other options that will be set,
" are added, or overwrite the default settings. Add as many options as you
" whish at the end of this file.

" Load the defaults
source $VIMRUNTIME/defaults.vim

" Prevent the defaults from being loaded again later, if the user doesn't
" have a local vimrc (~/.vimrc)
let skip_defaults_vim = 1


" Set more options (overwrites settings from /usr/share/vim/vim80/defaults.vim)
" Add as many options as you whish

" Set the mouse mode to 'r'
if has('mouse')
  set mouse=r
endif

$VIMRUNTIME上記のスニペットで使用される値はのようなものであることに注意してください/usr/share/vim/vim80/defaults.vim。)

「古いコピー/貼り付け動作」も有効にする場合は、そのファイルの最後に次の行も追加します。

" Toggle paste/nopaste automatically when copy/paste with right click in insert mode:
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"

inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()

function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

4
これは受け入れられた答えであるはずです。また、リンクされたバグレポートから、私たちは逃げることができると思いますsource $VIMRUNTIME/defaults.vim
Alasdair

1
ついにこれを展開できた、素晴らしい、すばらしい仕事です!+1
ルイFリベイロ

2
ソース/usr/share/vim/vim81/defaults.vimを使用するだけで、Debian 10で引き続き動作中
Rui F Ribeiro

26

マウス認識からvimを削除する1つの方法は、マウスに関する構成をコメントアウトすることです。

では/usr/share/vim/vim80/defaults.vim、マウス固有の検出を次のようにコメントアウトしました。

" In many terminal emulators the mouse works just fine.  By enabling it you
" can position the cursor, Visually select and scroll with the mouse.
"if has('mouse')
"  set mouse=r
"endif

(これらのvim構成ファイルでは、 "はコメントを開始しています)。

この変更により、問題なくコピーして貼り付けることができました。

構成ファイルが保護されていない(または流用されていない)場合、実際には更新に上書きされるため、これは理想的なソリューションではないというコメントに同意します。当時、かつて私が働いていたパッケージのバージョンまたはサーバーの構成のいずれかの仕様のために、それが機能した唯一のものでした。そのため、私はこの答えをここに残し、最後の手段としてのみ使用すべきです。


2
IMOこれは悪い答えです!パッケージ管理によって処理されるファイルを編集するようにユーザーを奨励することは、将来予想外の事態を引き起こす可能性があります。@ I-GaLaXy-Iの回答が望ましいです。
ジェレミーデイビス

1
@JeremyDavisこれは最善の解決策ではないことに同意します。当時は、何らかの理由で機能する唯一のものでした。いくつかの代替手段を試しました。しかし、今では複数の人が他の解決策を教えてくれているので、私はそれを正しい答えとして受け入れています。当時は転換を使用し、構成ファイルは上書きされませんでしたが、これも理想的な解決策ではありません。
ルイFリベイロ

11

オプションVimドキュメントにmouse

マウスボタンのxterm処理は、Shiftキーを押したままにすることで引き続き使用できます。


ありがとう。私は長年Vimを使用してきましたが、その機能については知りませんでした。質問を編集して、使用可能な書式設定機能をさらに取り入れました。Unix&Linuxへようこそ!
アンソニーG-モニカの正義

1
問題はないのxterm ...私はパテ/ mobaXterm WindowsでMacのターミナルと私の演算子を使用していますということです
ルイFリベイロ

3

/etc/vimrc.local次を作成して挿入することにより、システムファイルを変更せずにこれを無効にできます。

set mouse=

ベータ版では、一貫して機能しませんでした。ありがとうございます。
ルイFリベイロ

2
これは動作しません。
LtWorf

上記のI-GaLaXy-Iの回答を参照してください。defaults.vimを明示的にインポートし、インポートされないようにする必要があります。
リチャード

これは私にとってもうまくいきますが、@ I-GaLaXy-Iの答え(編集/作成された/etc/vim/vimrc.local)と組み合わせました
ジェレミーデイビス

Debianの9容器内部の間、ちょうど〜/ .vimrcとに入れて...私のために罰金を働いた
スコットStensland

1

多くの人が提案しました:set mouse=a:set mouse=r、Debian 9のVimではコピー&ペーストのみが有効であることがわかりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.