文章总结: 本文分析飞牛系统vim无法右键粘贴的故障。根因是缺少.vimrc导致系统加载defaults.vim,其中mouse=a参数限制了右键功能。解决方法是创建空.vimrc或设置:setmouse=。文章记录了配置对比排错过程,并梳理了vimmouse模式技巧,对解决工具配置问题有参考价值。 综合评分: 93 文章分类: 安全工具,实战经验
飞牛系统下 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 不好用的原因》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论