扫码关注官方订阅号
我首先给出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
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我首先给出
mosh
的源代码地址,这种事情建议自己读源代码自己跟踪程序行为比直接问直接获取一个答案更有趣。实际上
mosh
的实现用了 ANSI 转义字符,关于 ANSI 转义字符这个概念,可以在网上找到很多介绍,我就不再赘述了,我直接给出一个下划线的例子:这段程序编译之后运行可以打印出一行带有下划线的字符串
abc
。mosh
具体的代码在src/terminal/terminalframebuffer.cc这个文件里实现的Renditions::sgr()
方法,如果underlined
被置位,那么ret
实际上就会返回含有类似\033[0;4m
这样的字符串,这样的字符串在终端打印出来的时候就会表现为在指定部分有下划线。