几周前,我进行了一项终端调查(您可以在此处阅读结果),最后我问:
使用终端时最令您沮丧的事情是什么?
1600 人回答了,我决定花几天时间对所有回复进行分类。一路上我了解到对定性数据进行分类并不容易,但我尽了最大努力。我最终构建了一个自定义工具,可以更快地对所有内容进行分类。
与我所有的调查一样,该方法并不是特别科学。我刚刚将调查发布到 Mastodon 和 Twitter,运行了几天,并从碰巧看到它并想要做出回应的人那里得到了答案。
以下是最令人沮丧的类别!
我认为在阅读这些评论时值得记住
- 接受本次调查的 40% 的人已经使用该终端超过21 年
- 95% 的受访者已使用该终端至少 4 年
这些评论并非来自完全的初学者。
以下是挫折的类别!括号中的数字是有这种挫败感的人数。老实说,我不知道这对其他人来说有多有趣——我只是为自己写这篇文章,因为我正在尝试写一本关于终端的杂志,我想了解人们遇到的问题。
记住语法 (115)
人们谈论记忆中的挣扎:
- CLI 工具的语法,如 awk、jq、sed 等
- 重定向的语法
- tmux、文本编辑等的键盘快捷键
一个评论示例:
为了获得完整的功能,需要记住很多“琐事”细节。即使过了这么多年,我有时也会忘记 stderr 的 2 或 1 的位置,或者忘记
>
和>>
的哪个。
切换终端很困难 (91)
人们谈到了在切换系统(例如家庭/工作计算机或 SSH 时)时遇到的困难并遇到:
- 键盘快捷键的操作系统差异(例如 Linux 与 Mac)
- 没有首选文本编辑器的系统(“没有 vim”或“只有 vim”)
- 同一命令的不同版本(例如 Mac OS grep 与 GNU grep)
- 没有制表符补全
- 他们不习惯的 shell(“zsh 和 bash 之间的细微差别”)
以及同一系统内的差异,例如寻呼机彼此不一致(git diff 寻呼机,其他寻呼机)。
一个评论示例:
我习惯了 Fish 和 vi 模式,当我 ssh 到服务器、容器时,这些模式不可用。
颜色 (85)
颜色方面存在很多问题,例如:
- 程序设置的颜色在浅色背景下无法读取
- 找到他们喜欢的配色方案(并使其在不同的应用程序中一致工作)
- 颜色在 SSH/tmux/etc 的多个层中不起作用
- 不喜欢默认值
- 根本不想要颜色并且努力将其关闭
这个评论让我觉得很有意义:
在终端模拟器和鱼之间以合理的方式配置我的终端主题(我几年前做过,记得它很乏味且繁琐,现在感觉我被锁定在我当前的主题中,因为它有效,我害怕再次接触任何该配置)。
键盘快捷键 (84)
关于键盘快捷键的评论中有一半是关于在 Linux/Windows 上,终端中复制/粘贴的键盘快捷键与操作系统其他部分的不同。
除复制/粘贴之外的键盘快捷键的其他一些问题:
- 在基于浏览器的终端中使用
Ctrl-W
并关闭窗口 - 终端仅支持有限的键盘快捷键(没有
Ctrl-Shift-
,没有Super
,没有Hyper
,很多ctrl-
快捷键是不可能的,比如Ctrl-,
) - 操作系统阻止您使用终端键盘快捷键(例如默认情况下 Mac 操作系统使用
Ctrl+left arrow
执行其他操作) - 在终端中使用 emacs 的问题
- 退格键不起作用 (2)
其他复制和粘贴问题 (75)
除了“复制和粘贴的键盘快捷键不同”之外,复制和粘贴还存在很多其他问题,例如:
- 通过 SSH 复制
- tmux 和终端模拟器如何以不同的方式进行复制/粘贴
- 处理许多不同的剪贴板(系统剪贴板、vim 剪贴板、Linux 上的“中键单击”键盘、tmux 的剪贴板等)并可能同步它们
- 从终端复制时添加随机空格
- 粘贴多行命令,这些命令会自动以可怕的方式运行
- 想要一种不使用鼠标复制文本的方法
可发现性 (55)
对此有很多评论,这些评论都归结为同一个基本抱怨——很难发现有用的工具或功能!这条评论总结了一切:
独立学习是多么困难啊。我所知道的大部分内容都是多年来随机的人告诉我的各种东西的集合。
陡峭的学习曲线 (44)
很多关于它的评论通常都有一个陡峭的学习曲线。几个示例评论:
使用它 15 年之后,我的使用速度并不比 5 年前甚至 10 年前快多少。
和
我知道通过了解更多有关快捷方式和命令以及配置终端的信息可以让我的生活变得更轻松,但我不会花时间,因为这让人感到不知所措。
历史 (42)
shell 历史记录的一些问题:
- 终端选项卡之间未共享历史记录 (16)
- 限制太短 (4)
- 恢复终端选项卡时未恢复历史记录
- 由于终端崩溃而丢失历史记录
- 不知道如何查找历史记录
一个评论示例:
我花了很多时间才弄清楚,但仍然让我恼火的是,zsh 上的“历史”缓冲区是如此之小;我必须输入“history 0”才能获得任何有用的历史长度。
不良文档 (37)
人们谈论:
- 文档通常不透明
- 手册页中缺少示例
- 没有手册页的程序
下面是一个有代表性的评论:
寻找好的示例和文档。手册页通常不够,必须费力地解决堆栈溢出
回滚 (36)
回滚的一些问题:
- 程序打印出太多数据,导致您丢失回滚历史记录
- 调整终端大小会扰乱回滚
- 缺少时间戳
- 您在后台启动的 GUI 程序会打印出妨碍其他程序输出的内容
一个评论示例:
调整终端大小时(特别是:使其变窄)会导致回滚内容重新包装损坏,因为命令根据终端窗口宽度格式化其输出。
“感觉已经过时了” (33)
关于终端如何受到遗留决策的阻碍以及用户如何最终需要学习感觉非常深奥的实现细节的大量评论。一个评论示例:
大多数遗留问题,如果能有一个 CLI 接口的全新实现就太好了。
shell 脚本编写 (32)
很多关于 POSIX shell 脚本的抱怨。人们普遍认为 shell 脚本编写很困难,而且切换到不同的不太标准的脚本语言(fish、nushell 等)也会带来自己的问题。
外壳脚本。我对放弃 shell 脚本而转向脚本语言的容忍度非常低。它太混乱和强大了。搞砸可能会付出高昂的代价,所以我什至都懒得理会。
更多问题
还有一些被提及至少 10 次的问题:
- (31) 命令行参数不一致:是 -h 还是 help 还是 –help?
- (24) 保持点文件在不同系统之间同步
- (23) 性能(例如“我的 shell 启动时间太长”)
- (20) 窗口管理(可能包含 tmux 选项卡、终端选项卡和多个终端窗口的某种组合。那个 shell 会话去了哪里?)
- (17) 通常感到害怕/不安(“一种令人衰弱的恐惧,担心我会用命令做一些神秘的坏事,而我完全不知道如何修复或撤消它,甚至不知道发生了什么”)
- (16) terminfo 问题(“如果/当我在其他地方尝试新的终端模拟器和 ssh 时,必须了解 terminfo。”)
- (16) 缺乏图像支持(sixel 等)
- (15) SSH 问题(比如当你失去 SSH 连接时必须重新开始)
- (15) 各种 tmux/screen 问题(例如 tmux 和终端仿真器之间缺乏集成)
- (15) 错别字和打字速度慢
- (13) 终端由于各种原因而变得混乱(按
Ctrl-S
、cat
二进制文件等)
就这样!
我不会对这些结果做太多评论,但这里有几个与我相关的类别:
- 记住语法和历史(通常你需要记住的是你以前运行过的东西!)
- 可发现性和学习曲线(缺乏可发现性绝对是学习困难的一个重要原因)
原文: https://jvns.ca/blog/2025/02/05/some-terminal-frustrations/