【xterm】解决Xterm.js伪终端「vim无配色」问题
【Xterm】解决Xterm.js伪终端「vim无配色」问题前言现象分析解决方式结果后记前言用Vue写了一款Web端的Linux远程伪终端,功能上已较为完善,能够执行串行端口终端下的所有命令,还添加了一些特有的功能,十分灵活:现象美中不足的是,在使用vim功能进行文本编辑的时候,并不能像其他伪终端连接软件那样进行渲染:可以看到,shell脚本的内容并没有配色渲染,虽然不影响使用,但是习惯了配色编辑
前言
用Vue写了一款Web端的Linux远程伪终端,功能上已较为完善,能够执行串行端口终端下的所有命令,还添加了一些特有的功能,十分灵活:
现象
美中不足的是,在使用vim功能进行文本编辑的时候,并不能像其他伪终端连接软件那样进行渲染:
可以看到,shell脚本的内容并没有配色渲染,虽然不影响使用,但是习惯了配色编辑的我还是有点接受不了差异。
分析
除了执行vim命令,像ll、ls这类命令的输出都是能够正常进行配色渲染的,这让我百思不得其解,一开始我思考的重点是我的伪终端前端代码,也就是Vue那一块出了问题,但是调试了半天之后,最终结果完全无差异,才让我的目光转回到了后端,也就是java与linux进行交互的那一块。
简单补充了关于linux终端与伪终端的相关知识后,我发现我使用其他远程连接软件(ZenTermLite)用的伪终端是xterm:
而我的Web端伪终端使用的是vt100:
那么ZenTermLite的伪终端在使用vim命令的时候是能够正常进行配色渲染的:
解决方式
问题出在那里很清楚了,我的Web端伪终端想要获得vim的配色渲染,只需要将伪终端的类型由vt100改为xterm即可,这个参数一般是在后端工具包获取Session、建立Channel的时候指定的,默认是vt100:
那由于我所用的的这个工具包里面的相关实现不是抽象类,就是静态方法,对于里面的变量我无法直接修改,只能进行类型强转之后进行设定:
结果
然后重启后端程序,再次连接终端,使用vim:
能够进行配色渲染了,问题解决。
后记
根据个人后端使用的远程连接工具包的实现不同,灵活更改各项配置,更重要的是要在使用的时候适当读读源码,有助于解决问题。
希望这篇文章能够帮组到你,有问题留言交流。
更多推荐
所有评论(0)