web-dev-qa-db-ja.com

vimカット&ペーストがStretch / Debian 9で機能しない

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

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

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

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

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

状況は、マウスを持っているというvimの認識によるものです。

Stack Overflowの他の質問に従って、私は/etc/vim/vimrc.localset mouse="r"およびset mouse="v;うまくいきませんでした。

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

ただし、100%正常に機能しません。他に何ができますか?

35
Rui F Ribeiro

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

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

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

ただし、ローカルの.vmrcファイルを使用する場合は、そこにすべてのオプションを設定する必要があります。ローカルの.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
39
I-GaLaXy-I

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

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

私はコメントに同意します。これは、構成ファイルが保護されている(または迂回されていない)場合、実際に更新に上書きされるため、これは理想的なソリューションではありません。当時、パッケージのバージョンまたは以前使用していたサーバーの構成の詳細により、機能したのはそれだけでした。したがって、私はこの答えをここに残しますこれは最後の手段としてのみ使用する必要があります

26
Rui F Ribeiro

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

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

11
Stefan

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

set mouse=
3
Geoffrey

多くの人が:set mouse=a:set mouse=r Debian 9のVimでコピーと貼り付けを有効にします。頑張ってください!

2
David Yeager