一、概述

问题来源

同时用过基于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:在vimvim -vvim filename界面下,输入此命令语句可以查询Vim运行路径(配置路径)所在的绝对路径(注意前面有英文冒号),查询出来的路径就是下面所用到的路径。
    1. /usr/share/vim/vim**/debian.vim:此文件定义vim软件包的所有选项值,且每次vim升级后,该文件都会被升级后的新文件覆盖;
    2. /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.针对全局用户

  1. 首先查询出当前vim的运行路径(配置路径)位置:执行vim然后输入:echo $VIMRUNTIME
  2. 编辑上一步查询出的路径下的默认配置文件:sudo vim $VIMRUNTIME/defaults.vim
  3. 找到包含if has('mouse')这句,将下面的set mouse=a修改为set mouse="",可能下面还有一句set mouse=nvi,这句可改可不用改【个人建议将原本的内容前面加上"注释掉即可】
  4. 保存文件完成修改::wq
  5. 无需重启,直接找一个文件编辑测试一下看看:vim ~/.vimrc

三、其他备注

由于基于Debian发行版的系统,绝大部分都默认非root用户,所以在执行以上命令时,需要添加sudo命令;
我在写以上操作时,已经默认加上了sudo命令,以防止非root用户在操作时出现无权限的问题。