DaRemote ssh终端模拟器反色问题调试记录
起因
用户报告在ssh终端下粘贴时显示不出内容。试了一下能复现,但为修复这个问题昨天还是差不多花了一整天时间。
处理
先是花了一个小时研究 bracketed paste mode
,发现其实没关系。又花了差不多三小时找到问题是 csi 7m
, inverse mode
处理的问题,改了一行代码后搞定。
隐藏问题
搞定后发现在Last login
和提示符
之间会显示一个反色的%
,而且是所有的服务器都会显示这个字符。又足足花了两个小时 分析返回的字节,
[27, 91, 49, 109, 27, 91, 55, 109, 37, 27, 91, 50, 55, 109, 27, 91, 49, 109, 27, 91, 48, 109] |
最后的 esc[?2004h
就是开启bracketed paste mode
。感觉都没有问题啊,esc[J
和esc[K
也都是往后删除,删不了前面的 %
。
转折
陷入困境的时候突然意识到,我所有的服务器都是用的zsh
。chsh -s /bin/bash
换成bash
果然没有问题!
最后查到资料只需要在.zshrc
中设置unsetopt prompt_cr prompt_sp
即可不显示 %。
又花两小时研究该设置,因为即使不在.zshrc
中去掉这两个选项,其他终端模拟器也不会显示%。不过没什么收获,也许是什么特殊处理,有时间再研究。
反思
回顾这个调试过程,其实粘贴不显示的问题一开始就意识到可能是反色的原因,但是思维定势用了一个错误的方法:既然深色背景浅色文字不显示,那换成浅色背景深色文字试试。😭