一、概述

问题来源

同时用过基于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用户在操作时出现无权限的问题。

©著作权归作者所有:来自51CTO博客作者被时光偷袭的老同志的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. NumPy进阶修炼|基础操作与运算
  2. python数据分析——详解python读取数据相关操作
  3. PHP操作Redis数据库常用方法(总结)
  4. 关于PHP目录操作总结
  5. PHP作用域和文件夹操作示例
  6. php链式操作的实现
  7. PHP常用日期时间操作合集
  8. 神操作之实现PHP跳转
  9. PHP如何删除一个路径下的所有文件夹和文件?

随机推荐

  1. 第21天android:《android从零开始》视频(10
  2. Android 调用有道词典查词
  3. Android 布局的属性
  4. AndroidAndroid程序提示和消息button响应
  5. Android(安卓)CoordinatorLayout 沉浸式
  6. Android(安卓)apk动态加载机制的研究(二):资
  7. Android获取设备信息
  8. Android窗口为弹出框样式
  9. Android(安卓)Studio使用Butterknife时出
  10. Android Studio出现Gradle DSL method no