mosh是一个ssh shell
可能gif帧少,未把效果显示完美。
我首先给出mosh的源代码地址,这种事情建议自己读源代码自己跟踪程序行为比直接问直接获取一个答案更有趣。
mosh
实际上mosh的实现用了 ANSI 转义字符,关于 ANSI 转义字符这个概念,可以在网上找到很多介绍,我就不再赘述了,我直接给出一个下划线的例子:
#include <stdio.h> int main(const int argc, const char * argv[], const char * envp[]) { printf("\033[0;4mabc\n"); return 0; }
这段程序编译之后运行可以打印出一行带有下划线的字符串abc。
abc
mosh具体的代码在src/terminal/terminalframebuffer.cc这个文件里实现的Renditions::sgr()方法,如果underlined被置位,那么ret实际上就会返回含有类似\033[0;4m这样的字符串,这样的字符串在终端打印出来的时候就会表现为在指定部分有下划线。
Renditions::sgr()
underlined
ret
\033[0;4m
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(1)
我首先给出
mosh
的源代码地址,这种事情建议自己读源代码自己跟踪程序行为比直接问直接获取一个答案更有趣。实际上
mosh
的实现用了 ANSI 转义字符,关于 ANSI 转义字符这个概念,可以在网上找到很多介绍,我就不再赘述了,我直接给出一个下划线的例子:这段程序编译之后运行可以打印出一行带有下划线的字符串
abc
。mosh
具体的代码在src/terminal/terminalframebuffer.cc这个文件里实现的Renditions::sgr()
方法,如果underlined
被置位,那么ret
实际上就会返回含有类似\033[0;4m
这样的字符串,这样的字符串在终端打印出来的时候就会表现为在指定部分有下划线。