V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MiketsuSmasher
V2EX  ›  知乎

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

  •  
  •   MiketsuSmasher · 2022-04-27 01:17:40 +08:00 · 4876 次点击
    这是一个创建于 943 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原文: 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.

    第 1 条附言  ·  2022-04-27 03:24:57 +08:00
    事后声明:我并不是原作者。你可以在原页面标题下方找到原作者。
    26 条回复    2022-05-11 08:46:56 +08:00
    Jooooooooo
        1
    Jooooooooo  
       2022-04-27 01:32:45 +08:00
    这...

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

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

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

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

    如果把独立版的 emacs 看做一个 terminal 的话,可能是支持 gui 应用最多的 terminal 。emacs 版的 telegram 甚至可以显示 gif 。
    adoal
        13
    adoal  
       2022-04-27 09:23:10 +08:00 via iPhone
    恭喜原作者,重新发明了 GUI
    Grapevine
        14
    Grapevine  
       2022-04-27 09:25:47 +08:00
    哈哈 很愤青
    inhzus
        15
    inhzus  
       2022-04-27 09:54:20 +08:00
    有一说一,warp 和作者的需求我自我理解有些类似
    jKpzPv20NjX56i44
        16
    jKpzPv20NjX56i44  
       2022-04-27 11:46:50 +08:00 via iPad
    很搞笑。Terminal 是什么?是新一代 X11 吗?
    stimw
        17
    stimw  
       2022-04-27 13:46:42 +08:00 via iPhone
    他只是在钓鱼啊
    thunderw
        18
    thunderw  
       2022-04-27 15:08:13 +08:00
    我直接点了反对,并且不评论😄
    libook
        19
    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
        20
    edimetia3d  
       2022-04-27 22:38:25 +08:00
    我对 CLI 还是很肯定的, CLI + shell 提供的效率显然是比 GUI 要好的.

    至于 TUI, 除了 vim 还算有点了解. 像 htop,iftop , 没熟悉之前,用起来总感觉怪怪的.
    ysc3839
        21
    ysc3839  
       2022-04-28 06:40:21 +08:00 via Android
    https://v2ex.com/about
    为了保持这里的良好氛围,V2EX 有自己的明确规则:
    • 这里绝对不会全文转载任何文章,而只会以链接方式分享 1

    1. V2EX 不反对文章的原作者自己全文转载自己写的原创文章
    SeanTo
        22
    SeanTo  
       2022-04-28 16:58:17 +08:00 via Android
    虽然不知道这篇到底在说啥,但对 shell 确实有一点小意见,在 git-bash 打一条命令输出很长的帮助信息时,往上滚屏不能轻松找到起始点,没有一个明显的分行隔断。
    BlindingDark
        23
    BlindingDark  
       2022-04-28 19:10:58 +08:00 via Android
    所以快用 Emacs 啦!
    MiketsuSmasher
        24
    MiketsuSmasher  
    OP
       2022-04-28 21:08:09 +08:00 via Android
    @ysc3839 感谢提醒,下次注意
    agagega
        25
    agagega  
       2022-05-01 00:25:27 +08:00
    Terminal 确实显得有些落后了,但背后这套小工具相互组合的 UNIX 哲学到今天也没有什么 GUI 产品能替代。苹果的 Automator/捷径是种思路,但也就那样吧
    Tink
        26
    Tink  
       2022-05-11 08:46:56 +08:00 via Android
    这是个钓鱼贴
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1521 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 17:06 · PVG 01:06 · LAX 09:06 · JFK 12:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.