说起来好久没怎么高强度和服务器、和代码打交道,所以之前一段时间真的是岁月静好。但是这段时间爬起来干一些活,竟然总会遇到奇奇怪怪的问题。
(图源 :pixabay)
话说之前不是准备淘汰老旧的香蕉派(BananaPi M3)嘛,因为它不但硬件老旧,系统也超级老旧啦,我搜索的一下,竟然有四五年没有更新对应板卡的OS啦,这和树莓派社区对老旧板卡的支持相比就是云泥之别呀。
没错,淘汰老旧的设备必然要启用新设备,看过我帖子的朋友肯定知道,我要启用的新设备就是树莓派4,其实说不上很新,但是是我当年斥巨资1000多大洋买的8G内存版,应该还能再战斗几年。
前些天装系统,改配置等操作都没啥问题,而且也成功把树莓派摄像头启用起来了,继续让它实现监控的功能。
问题描述
但当我打算在其上部署一些代码——直接从其它机器上COPY代码过来时,却遇到一个奇怪的问题,在vi编辑器中,我无法使用鼠标右键来粘贴代码到编辑器中!
相同的操作我在各种不同的机器上老旧的树莓派、香蕉派、各种版本的Ubuntu本地机、各种版本的VPS,都是这样操作的:鼠标拖拽选中其它机器中的内容;在vi中使用ESC,再按字母i,就进入到插入模式了。
然后鼠标点击右键,就会把粘贴板中的内容(之前鼠标选去的内容)插入到当前光标处!这绝对不会有错误,当年我曾经深入的学习过VI的各种指令和操作——但还能记住的不多,这是能记得住的操作之中最常用的一个(因为经常在各个机器之间复制一些代码、设置等)。
可是,用了无数年的,手拿把捏的,轻车熟路的操作为啥就不好用呢?哦对了,看我这记性,还没说是啥故障现象呢。
就是我在香蕉派vi编辑器中这样操作,底下的INSERT就会变成-- (insert) VISUAL --:

然后,就没有然后了,我根本不知道怎么继续,即便我再使用ESC以及i回到插入模式,故障依旧。怎么最近就总遇到这些奇奇怪怪的问题呢?莫非真的和走进科学怼上啦?
尝试解决
不过作为自己套上枷锁的牛马,还能有什么办法呢?那就是研究呗。当然,最好的方式就是问Google了。
于是我发出这样的疑问:
Paste is unavailable when right-clicking on the Raspberry Pi in vi.
我突然间想起好多好多年前,在某中文Unix社区,某大神写了一篇文章,叫做《提问的智慧》。大意是如何把要问的问题表达的清楚明白!
比如有些中文社区小伙伴,经常微信上私聊我问我:“发不了帖子了,怎么办?”
我就会很疑惑,到底是怎么了叫发不了帖子了呢?比如我在飞机上,没有无线网5G啥的信号,也没有WIFI,这样也发不了帖子呀?!
当然,这只是一个杠精式举例,但是说到发不了帖子,自然就会有以下问题:
- 用的什么站点或者客户端?
- 能否正常地访问站点或者客户端?(会不会是梯子的问题)
- 能否正常地登陆网站或者客户端(会不会是账户、密钥问题)
- 能否正常地编辑帖子和插入图片等(客户端的问题?)
- 帖子发布时出了什么样的提示?(API节点问题)
- 其它待补充的问题(比如有没有可能是家里的电脑或者网络坏了?)
所以说,遇到诸如“发不了帖子了,怎么办?”这样的问题,让不让人头大?
但如果你这样说:
我使用XXX客户端,正常访问和登陆,也可以正常编辑,但是点击提交时出了如下错误。提示信息为XXXX。另外,这是截图。
那我可能一下子就找到了问题所在。
扯远了,我问的问题也不算有多高明,但是这样问,能在Google找到答案就好。Google AI 直接给出了导致这个问题的原因:
Your right-click "Paste" option is unavailable in the terminal version of vi on Raspberry Pi due to a configuration setting that gives vi control over mouse events
然后贴心地给出了四个答案: * Solution 1: Use keyboard shortcuts * Solution 2: Temporarily disable mouse support * Solution 3: Make the change permanent * Solution 4: Use the middle mouse button
我试了一下,1、2根本不好用,3、4本质上是同个答案(临时方案和永久方案)
我把方案3、4贴在这里,有遇到类似的问题的,也不用重新去搜索了。

深入了解
但是感觉还是不够优雅,以及为什么在这个树莓派新版OS上出现这个问题,以前都没遇到过呢?于是又深入地去搜索和了解了一下。
折腾一番之后,找到这样一篇文章:Fix vim right click paste not working
这是一篇2021年十月份的文章,虽然有些老旧了,但是完美地帮我解答了疑问——以及,解决了问题。
之所导致我遇到的这个问题,就是因为这个原因:
If Vim is started normally and no user vimrc file is found, the $VIMRUNTIME/defaults.vim script is loaded
使用如下指令搜索了一下默认的配置文件
grep mouse /usr/share/vim/vim91/defaults.vim
果然发现如下内容:

而在我其它机器上同样的搜索,却没有set mouse=a类似的字样,这就是导致问题以及差异的根源所在呀!
最佳方案
好了,现在我们知道了导致这个问题的缘由所在,也知道了解决方案,但事情就到此为止了嘛?
或许这些解决方案(创建.vimrc且设置set mouse=)在某种环境下正常工作,但是在最新版本的树莓派OS中,会带来个新问题,那就是默认配置没有加载,代码高亮等特性也没啦!
这显然不是我想要的结果呀,所以又是一番深入探索后,发现帮助文件中这样信息:

所以这回才是圆满的解决方案,在.vimrc中加入如下内容:
unlet! skip_defaults_vimsource $VIMRUNTIME/defaults.vimset mouse=
搞定收工,《走近科学》剧组再次被我放鸽子啦。