Vim のカット&ペーストが Stretch / Debian 9 で動作しない

Vim のカット&ペーストが Stretch / Debian 9 で動作しない

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

現在、 を使用するとssh、リモート端末間でコピーと貼り付けができなくなります。

カーソルは、通常よりもおかしな/異なる方法ではありますが、移動してテキストをマークしているように見えますが、それぞれのメニューでコマンド + C / コマンド + V またはコピー アンド ペーストを実行すると、クリップボード以外には何もコピーされません。

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

これは、OS/X、つまり Sierra と El Capitan で発生しており、Windows でも mobaXterm ターミナルを使用して発生します。

この状況は、vim がマウスの存在を認識しているために発生します。

Stack Overflow の他の質問に従って、と/etc/vim/vimrc.localを使用して作成しましたが、うまくいきませんでした。set mouse="r"set mouse="v

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

しかし、100% 確実に機能するわけではありません。他に何ができるでしょうか?

答え1

解決策:ローカル で をmouse=aに変更します。mouse=r.vimrc

受け入れられた回答にあるようにこれを設定すると、更新のたびに上書きされてしまうという問題/usr/share/vim/vim80/defaults.vimがあります。私は長い間検索して、これにたどり着きました: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864074

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

しかし、ローカル ファイルを使用する場合は.vimrc、すべてのオプションをそこで設定する必要があります。ローカル が存在すると.vimrc、 はdefaults.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

答え2

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 設定ファイルでは、" はコメントを開始します)。

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

コメントには同意しますが、これは理想的な解決策ではありません。設定ファイルが保護されていない(または転用されていない)限り、更新時に上書きされてしまうからです。当時、パッケージのバージョンや私が働いていたサーバーの設定の特定のため、これが唯一機能するものでした。そのため、この回答をここに残しておきます。それは最後の手段としてのみ使用されるべきです

答え3

mouseオプションのVimドキュメント言う

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

答え4

多くの人が提案しました:set mouse=aが、Debian 9 では Vim でのみコピー & ペーストが有効になることがわかりました:set mouse=r。頑張ってください!

関連情報