如何将终端设置成这种好看的粘连效果?(mosh)

mosh是一个ssh shell

可能gif帧少,未把效果显示完美。
gif

阅读 3.1k
1 个回答

我首先给出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

mosh具体的代码在src/terminal/terminalframebuffer.cc这个文件里实现的Renditions::sgr()方法,如果underlined被置位,那么ret实际上就会返回含有类似\033[0;4m这样的字符串,这样的字符串在终端打印出来的时候就会表现为在指定部分有下划线。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题