飞牛系统下vim不好用的原因

admin 2026-01-09 03:17:20 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析飞牛系统vim无法右键粘贴的故障。根因是缺少.vimrc导致系统加载defaults.vim,其中mouse=a参数限制了右键功能。解决方法是创建空.vimrc或设置:setmouse=。文章记录了配置对比排错过程,并梳理了vimmouse模式技巧,对解决工具配置问题有参考价值。 综合评分: 93 文章分类: 安全工具,实战经验


cover_image

飞牛系统下 vim 不好用的原因

原创

hyang0

生有可恋

2026年1月8日 07:28 湖北

通过 ssh 管理飞牛系统时,使用 vim 编辑文件时无法用鼠标右键粘贴剪贴板内容。

在 vim 终端中当使用鼠标右键粘贴剪切板内容时,会提示:

在状态栏显示 (insert) VISUAL,不清楚发生了什么,与在其它 linux 上使用 vim 的习惯不太一样。其它发行版的 linux 自带的 vim 是支持在 insert 模式下右键粘贴的。结果在飞牛系统下,右键用不了了。

初步怀疑是 vim 配置的问题,于是将其它 linux 系统下的 .vimrc 配置文件拷贝到飞牛下。问题立刻就解决的,.vimrc 配置如下:

syntax onset numberset pasteautocmd FileType python expandtabset virtualedit=allfiletype plugin indent on

问题到这里本来已经解决了,右键也能正常粘贴了。但我好奇是哪个 vim 参数导致的鼠标不能用,好奇宝宝上线,下面跟随我一起探险。

我们知道 vim 下有一个命令可以查看所有的vim配置选项,这个命令就是

:set all

几天前我打开看了一眼,内容太多了,眼花缭乱。

心想不用看这么多,不就上面 .vimrc 中配置中的那几个吗。使用排除法,一个一个地删,看是哪个参数导致的 vim 右键失效。

然后我就一个一个地删,删完后测试 vim 右键功能。我原以为是下面这个参数导致的。

set virtualedit=all

结果不是,一直删到最后,一个都不剩结果右键还是可以用。把 .vimrc 内容都删完了,右键功能还是正常。我开始怀疑是 .vimrc 这个文件的问题,有这个文件和没这个文件,vim 配置不一样。

测试后果然是 .vimrc 配置文件的问题,当删出 home 目录下的 .vimrc 文件后,vim 右键又出问题了。建一个空的 .vimrc 就能解决 vim 右键粘贴问题,和我配置的参数完全无关。

到这里故事还没完,我想知道有 .vimrc 和没 .vimrc 的区别,好奇宝宝Plus 上线。

通过 :set all 可以查看配置,于是我在有 .vimrc 和没 .vimrc 的情况下将配置导出两份用来对照。

在命令行导出vim配置的命令为:

vim +"redir > output.txt" +"set all" +"redir END" +q

导出后,我先用 diff 工具看了下:

diff -up 使用的是类似 git side-by-side 的方式比较的,加减号代表删和增。命令行下不太好看,于是我又转到 windows 中,用 kdiff3 工具看。

kdiff3 一般用于代码的三方合并,用来比较两个文件的差异非常方便。

kdiff3 打开这两个文件后是这样的:

因为 set all 使用了多列排版,对比效果不好。我将每个选项重新用换行分割:

cat output.txt | sed 's/ \{2,\}/\n/g'

这条sed命令的意思是如果有多个空格,将多个空格换成换行符。

换完行后效果如下,参数不再多列排版:

为了比较还需要对文本进行排序:

cat output.txt | sed 's/ \{2,\}/\n/g' | sort

排完序再次对两个配置文件进行 kdiff3 比对:

经过我多年 debug 经验 + 600度近视眼 + 不戴眼镜等种种buff加持下,发现了以下痕迹:

通过 vim 查看 mouse 参数引入的配置文件:

:verbose set mouse?

通过 verbose 命令定位到该参数是从 defaults.vim 中引入的,当 home 目录中缺少 .vimrc ,系统会从 defaults.vim 中读取配置。

其中默认的 mouse=a 会使右键粘贴失效,如果细查 vim 文档,在 mouse=a 下鼠标也是可以用的,只是右键粘贴时需要加上 shift 键。

如何想禁用这种行为,可以使用 :set mouse= 禁用。

到此这一路的探索结束,既然知道了是 mouse 参数的问题,后续就简单多了。把 mouse 参数的各种模式重新学习一遍,以后可以预防各种突发情况。

vim 下如果不能粘贴可真要了老命了,只有遇到的才能体会。

附:(vim mouse 模式)

  • mouse= 完全禁用鼠标。
  • mouse=n 仅在普通模式下启用。
  • mouse=v 仅在可视模式下启用。
  • mouse=i 仅在插入模式下启用。
  • mouse=c 仅在命令行模式下启用。
  • mouse=r 在 hit-enter和 more-prompt 时启用(较少用)。

在 mouse=a 模式下,可通过鼠标选中文本按 y 复制,p 粘贴。如果要用鼠标右键粘贴系统剪贴板而非vim缓冲中的内容,按 shift 右键粘贴。

全文完。

封面图(晨曦,跑步时拍到的)


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:生有可恋 hyang0《飞牛系统下 vim 不好用的原因》

评论:0   参与:  0