新的钓鱼已经出现:开发 Terminal 程序就是走下坡路

2022-04-27 01:17:40 +08:00
 MiketsuSmasher

原文: https://zhuanlan.zhihu.com/p/504899532

也许你 Terminal 用的很 6 ,你喜欢终端超过 GUI ,但今天我来说,Terminal 就是计算机历史上的糟粕产物,你们绝大多数程序员都忽略了 Terminal 几个极其令人无语的缺陷。

不管是 Gnome Terminal 还是 Windows Terminal ,两个操作系统的 Terminal 都十分落后于时代。

Terminal 为了支持 Vim 这种程序不得不将自己限定在一种代码环境。

什么叫代码环境?大家知道代码是什么样子的,统一的字体家族,统一的字体大小。

所以 Terminal 最大的缺陷就是它同时只能支持一种字体家族和字体大小,这就很蹩脚。

不管你 Terminal 做的再好,只要你选择支持 Vim 这种程序,就会被限定在统一字体样式的代码环境,就会单调乏味且枯燥。

代码是统一字体样式的环境,这对于编辑代码来说是好的,但对输出信息来说却不是。

你输命令的时候,你肯定希望字体样式一模一样,这样方便辨认命令。

但是在应用程序输出结果的时候,如果只能限定为一种字体样式是不是太死板了?

就为了支持 Vim 这种遗留产物却要将 Terminal 弄的功能如此弱小?

我宣布提出下一代 Terminal 的改进思路,我们需要把输入层和输出层严格分离。

所谓的严格分离是指什么意思?大家知道现在的输入输出信息都是混在一起的。

如果说我在开启 Terminal 的时候同时构建两个窗口,窗口 1 专门用来输入命令,窗口 2 专门用来展示命令调用的结果。这样窗口 2 就可以不必被限定为一种字体样式,试想一下如果窗口 2 变成了类似于 QQ 的聊天窗口,字体大小可以随便调节,背景随便调节,甚至还可以添加类似于 QQ 气泡的特效,还可以输出图片,这样的窗口 2 不比现在的 Terminal 强成百上千倍?这才是我心目中功能强大的 Terminal 。

大家都知道 QQ 聊天有聊天记录的功能,这能记录用户的历史输出信息,Terminal 现在的缺陷是什么?你命令输完了,然后按下 clear ,所有过去的命令记录都没了,你连你之前执行了什么操作都查不到,这就导致 Terminal 极其难用。所以我希望构建一个命令日志系统,至少能记录过去一百次的操作都使用了哪些命令,并产生了什么结果,都记录在档案,这样开发者不就能随时翻阅了吗?

窗口 1 作为输入窗口沿用目前 Windows Terminal 的特性是十分合适的,但一定要构建一个窗口 2 作为视图层专门展示输出的结果,这就是我对 Terminal 未来的一些想象。

虽然码农不需要 GUI ,但我们需要多样化的输出样式。This the fashion. This is my style.

4653 次点击
所在节点    知乎
26 条回复
Jooooooooo
2022-04-27 01:32:45 +08:00
这...

不说别的, 历史输入记录都是有的啊.
tabris233
2022-04-27 01:36:12 +08:00
history 了解一下 Ctrl+r 也可以试一下
MiketsuSmasher
2022-04-27 01:45:47 +08:00
@tabris233 看起来这个作者即不了解 history ,也没试过 Ctrl+R ,甚至可能都不知道这些功能都是 Shell 而不是终端提供的
Trim21
2022-04-27 01:58:28 +08:00
看起来像要重新发明 gui
imycc
2022-04-27 01:58:56 +08:00
没仔细看标题,差点以为 OP 是原作者。打完一篇腹稿正准备打字呢。。

那抛开这一篇满满的槽点(真要吐槽几百字写不完),他要的东西,其实就是 alfred 、utools 这类工具而已
yzbythesea
2022-04-27 03:29:00 +08:00
他在说些什么。。。看到输入 /输出层我确定他读的文科。
mgrddsj
2022-04-27 06:03:26 +08:00
所以,如 Joma 所说,Microsoft Word 是最好的 IDE ,每个字都能自己定义格式、字体、大小、颜色,比 Terminal 好到不知道哪里去了[Doge]

<amp-youtube data-videoid="X34ZmkeZDos" layout="responsive" width="480" height="270"></amp-youtube>
mgrddsj
2022-04-27 06:06:48 +08:00
@mgrddsj #7 漏打了,比 Terminal + Vim 好到不知道哪里去了[Doge](纯属抖机灵)
AlisaDestiny
2022-04-27 07:30:05 +08:00
@mgrddsj 我在怎么感觉这个人在阴阳怪气 :)
stein42
2022-04-27 08:07:32 +08:00
jupyter notebook 可以输出 HTML ,所以格式化文本、数学公式、表格、图片、3d 、交互式等都不是问题。
mathematica 不光可以输出这些,输入也可以是数学公式、图片等。
villivateur
2022-04-27 08:21:40 +08:00
这个人不是蠢就是坏,要么是外行凑热闹的,要么是本行故意引战的
kindjeff
2022-04-27 08:24:00 +08:00
大多数流行 terminal 都已经有富文本(虽然不是很富)和图片渲染的方案了,只是都不统一。

比如启动 celery worker 的时候,在 iterm 里会打印一张图片,而 Mac 自带 terminal 没有,即使它也能打印图片。

如果把独立版的 emacs 看做一个 terminal 的话,可能是支持 gui 应用最多的 terminal 。emacs 版的 telegram 甚至可以显示 gif 。
adoal
2022-04-27 09:23:10 +08:00
恭喜原作者,重新发明了 GUI
Grapevine
2022-04-27 09:25:47 +08:00
哈哈 很愤青
inhzus
2022-04-27 09:54:20 +08:00
有一说一,warp 和作者的需求我自我理解有些类似
qwerzl
2022-04-27 11:46:50 +08:00
很搞笑。Terminal 是什么?是新一代 X11 吗?
stimw
2022-04-27 13:46:42 +08:00
他只是在钓鱼啊
thunderw
2022-04-27 15:08:13 +08:00
我直接点了反对,并且不评论😄
libook
2022-04-27 15:54:32 +08:00
感觉是在反讽喜欢用 terminal 不喜欢用 GUI 的人,明面上是再说 terminal 需要哪些新功能,实际上是在说还不如用 GUI 。

当前我们所说的 Terminal 实际上指的是 Command-line Terminal Emulator ; terminal 本身突出的就是交互设备的意思,无所谓是命令行还是图形的方式,甚至公交车上的刷卡机也可以被称作为 terminal 。

所以现在凡是在做 Terminal 程序的,实际上是在“emulate”过去计算机的那种 terminal 使用方式,terminal 功能再多,也是给软件调用的(比如加粗、颜色、背景等等),如果软件不懂得调用各种丰富输出样式的接口,就还是死板的样式;既然要模拟,就得兼容一些通用设计要求,而且软件设计者也是遵照着通用的 terminal 接口规范来设计的;除非自己设计的 terminal 只能在自己设计的 shell 和 command-line 中体现更丰富的特性,倒不是不行,只是可能没人愿意用。

个人用 terminal 主要就是为了满足一些场景下高效工作的需要,对 terminal 的要求也就是尽可能简单、快捷,真正有图像上面的需要就乖乖去用 GUI ,比如一个指令直接打开要看的 GUI 界面,也是很方便的。所以如果这也是普遍用户对 terminal 的要求,那么就会是普遍开发者对 terminal 的设计方向。
edimetia3d
2022-04-27 22:38:25 +08:00
我对 CLI 还是很肯定的, CLI + shell 提供的效率显然是比 GUI 要好的.

至于 TUI, 除了 vim 还算有点了解. 像 htop,iftop , 没熟悉之前,用起来总感觉怪怪的.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/849463

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX