
ここでいくつかの 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
Shift キーを押したままにすると、xterm のマウス ボタンの処理は引き続き使用できます。
答え4
多くの人が提案しました:set mouse=a
が、Debian 9 では Vim でのみコピー & ペーストが有効になることがわかりました:set mouse=r
。頑張ってください!