EAF, Wetty and XTerm.js
Emacs
EAF
字数921 2020-01-28

基于Wetty + XTerm.js的终端模拟器方案

今天写了一个新的补丁Use wetty as terminal backend

用Wetty + XTerm.js的方案替代了EAF原来的QTermWidget后端,基于XTerm.js的先进特性,新的终端模拟器可以像VTE那样完整的模拟图形化命令行工具,比如htop,cmatrix, sl,甚至Emacs和Vi也可以在里面正常运行。

和Emacs现有终端模拟器方案的横向对比:

终端模拟器方案 终端文本操作效率 图形命令行工具支撑能力 Shell可编程扩展能力 优势
term.el/multi-term.el 文本操作效率中等,可以使用Emacs光标移动命令,但是很多时候需要 term-send-* 命令才能正常发送命令给Shell 图形命令行工具支撑能力中等,但是cmartrix这种复杂的没法运行 Shell可编程扩展差, 功能和Bash/Zsh的能力一致 功能比较均衡
EAF Terminal 文本操作效率差,无法使用Emacs光标移动命令,效率和外部图形终端模拟器一样低 图形命令行工具支撑优秀,可以支撑世面上所有图形命令行工具 Shell可编程扩展差, 功能和Bash/Zsh的能力一致 图形命令行工具支撑能力优秀
eshell/aweshell 文本操作效率优秀,可以使用Emacs光标移动命令 图形命令行工具支撑能力差,无法运行图形命令行工具 Shell可编程扩展优秀,可以完全自定义Shell功能 Shell可编程扩展优秀

我的终端使用习惯

2018年前,我一直在用自己写的multi-term.el, 偶尔配合一下外部的图形终端模拟器Deepin Terminal

2018年以后,主要使用我新造的Aweshell, 偶尔使用Deepin Terminal

现在我的日常终端模拟器依然是Aweshell, 因为Aweshell的文本编辑能力和编程可扩展能力最强,随着EAF的完善,我会逐步用EAF Terminal减少Deepin Terminal的使用比例。但是我不会完全弃用Deepin Terminal, 因为我经常编写Emacs插件,需要不断的重启Emacs以验证插件在干净Emacs环境下的表现。

以下是EAF终端模拟器的测试效果:

htop命令

EAF and Wetty

sl命令

EAF and Wetty