跳转至

Vim 右键无法插入内容,并变为 --(insert) VISUAL--

约 278 个字 13 行代码 预计阅读时间 1 分钟

原因

Vim 启用了鼠标支持。

解决方案

临时

执行命令:

:set mouse=

永久

对单个用户生效

修改 Vim 配置文件(如 ~/.vimrc),添加:

set mouse=

全局生效

理论上可以通过修改 /etc/vim/vimrc 来配置。但是从 Vim 8.0 开始,如果 用户没有 ~/.vimrc,Vim 会自动加载系统自带的 defaults.vim(通常位于 /usr/share/vim/vimXX/defaults.vim),其中包含:

1
2
3
if has('mouse')
  set mouse=a
endif

在 Vim 中可以通过 :verbose set mouse? 查询是被哪个文件配置的:

Last set from /usr/share/vim/vim90/defaults.vim line 83

这个行为是为了让新手获得“更友好”的体验(比如支持鼠标),但对服务器 SSH 用户来说反而造成干扰。

/etc/vim/vimrcdefaults.vim 之前被加载(在 Debian/Ubuntu 系中),所以你在 /etc/vim/vimrc 末尾写的 set mouse= 会被后面 defaults.vimset mouse=a 再次覆盖。

对此可以阻止 defaults.vim 被加载,但需要自己去设置原本的其他配置项(如语法高亮):

1
2
3
4
5
6
let skip_defaults_vim = 1

set mouse=
set nocompatible
syntax on
" 其他全局设置...

或者可以尝试用 autocmd 延迟设置,不需要复制粘贴原本的配置,但这依赖于事件机制,不如上面的方法干净可靠:

autocmd VimEnter * set mouse=