此处将一些 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
) 并在那里设置您的选项。或者创建一个,/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 脱离鼠标感知的一种方法似乎是注释掉有关鼠标的配置。
在/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
,但我发现只能:set mouse=r
在 Debian 9 上的 Vim 中启用复制和粘贴。祝你好运!