一、概述
问题来源
同时用过基于RedHat发行版系统(如CentOS)和基于Debian发行版系统(如Ubuntu)的人,会发现两者在vim
的操作上有着很大不同:
- 默认情况下,基于Debian发行版系统,在使用vim编辑一个文件,操作鼠标时会显示为
可视
模式,无法使用鼠标正常操作,这是因为基于Debian发行版的系统启用了vim的鼠标模式的原因; - 而基于RedHat发行版系统,则不会出现这种情况,使用vim编辑文件时,也可以正常使用鼠标来操作,例如选中文本后右键等操作。
问题分析
经过我长时间的谷歌查询,并结合Vim官网说明、vim - Debian官网以及Running VIM 8 at RHEL - RedHat官网的相关资料,分析得出:
- 原来是
vim
默认的配置文件便是开启了鼠标模式的配置! - 而基于RedHat发行版的系统则针对vim定制了一套属于自己的默认
/etc/vimrc
配置文件,该配置文件完全抛弃了Vim默认配置文件,采用了RedHat自己的一套配置; - 但基于Debian发行版的系统,则依然采用Vim的官方默认配置文件,并通过
/etc/vim/vimrc
来调用该配置文件。
处理准备
为了解决问题,我们需要知道以下信息:
:echo $VIMRUNTIME
:在vim
、vim -v
或vim filename
界面下,输入此命令语句可以查询Vim运行路径(配置路径)所在的绝对路径(注意前面有英文冒号),查询出来的路径就是下面所用到的路径。
/usr/share/vim/vim**/debian.vim
:此文件定义vim软件包的所有选项值,且每次vim升级后,该文件都会被升级后的新文件覆盖;/usr/share/vim/vim**/defaults.vim
:如果/home/username/
目录下没有.vimrc
配置文件的话,那么vim将默认调用加载此配置文件,该文件也是下文永久解决方案所需要修改处理的文件。
二、处理解决
临时解决
用户可以在使用vim
时,在编辑界面,直接输入:set mouse=
或:set mouse=""
后,按<kbd>Enter</kbd>回车键,即可临时关闭鼠标模式。
永久解决
1.针对当前用户
#将vim官方默认配置文件放到当前用户目录下
wget --no-check-certificate https://raw.githubusercontent.com/vim/vim/master/runtime/vimrc_example.vim -O ~/.vimrc
#如果出现“失败:拒绝连接”的话添加下HOST解析
sudo vim /etc/hosts
#在最下面加上一句:199.232.68.133 raw.githubusercontent.com后再执行:
wget --no-check-certificate https://raw.githubusercontent.com/vim/vim/master/runtime/vimrc_example.vim -O ~/.vimrc
#此时可以为该vim配置文件添加一些常用的配置,如下示例:
echo >> ~/.vimrc
#设置语法高亮
echo 'syntax on' >> ~/.vimrc
#开启行号显示【简写方式】或下面的【标准方式】也可以
echo 'set nu' >> ~/.vimrc
#开启行号显示【标准方式】或上面的【简写方式】也可以
echo 'set number' >> ~/.vimrc
#开启拼写检查
echo 'set spell' >> ~/.vimrc
#重点:关闭鼠标模式
echo 'set mouse=""' >> ~/.vimrc
2.针对全局用户
- 首先查询出当前
vim
的运行路径(配置路径)位置:执行vim
然后输入:echo $VIMRUNTIME
- 编辑上一步查询出的路径下的默认配置文件:
sudo vim $VIMRUNTIME/defaults.vim
- 找到包含
if has('mouse')
这句,将下面的set mouse=a
修改为set mouse=""
,可能下面还有一句set mouse=nvi
,这句可改可不用改【个人建议将原本的内容前面加上"
注释掉即可】 - 保存文件完成修改:
:wq
- 无需重启,直接找一个文件编辑测试一下看看:
vim ~/.vimrc
三、其他备注
由于基于Debian发行版的系统,绝大部分都默认非root用户,所以在执行以上命令时,需要添加sudo
命令;
我在写以上操作时,已经默认加上了sudo
命令,以防止非root用户在操作时出现无权限的问题。