diff --git a/_drafts/Article/Translation/some-terminal-frustrations.md b/_drafts/Article/Translation/some-terminal-frustrations.md index aa4a9aab..4a09acaf 100644 --- a/_drafts/Article/Translation/some-terminal-frustrations.md +++ b/_drafts/Article/Translation/some-terminal-frustrations.md @@ -7,8 +7,207 @@ translator: "" reviewer: "" --- -• [terminal][1] • +几周前我进行了一项终端调查(你可以[在这里阅读结果][1]),最后我问道: - +> 对你来说,使用终端最令人沮丧的事情是什么? -[1]: /categories/terminal \ No newline at end of file +1600 人回答了这个问题,我决定花几天时间对所有回答进行分类。在此过程中,我了解到对定性数据进行分类并不容易,但我尽力而为。我最终构建了一个自定义[工具][2],使分类一切变得更快。 + +与我所有的调查一样,方法并不特别科学。我只是将调查发布到 Mastodon 和 Twitter 上,运行了几天,并从恰好看到它并愿意回应的人那里获得了答案。 + +以下是令人沮丧的主要类别! + +我认为在阅读这些评论时值得记住: + +* 回答这项调查的人中有 40%已经使用终端**21 年以上** +* 回答调查的人中有 95%使用终端至少 4 年 + +这些评论并非来自完全的初学者。 + +以下是令人沮丧的类别!括号中的数字是有这种沮丧的人数。我主要是为自己写这篇文章,因为我正在尝试写一本关于终端的小册子,我想了解人们遇到的问题。 + +### [记住语法 (115)][3] + +人们谈到了记住以下内容的困难: + +* 像 awk、jq、sed 等 CLI 工具的语法 +* 重定向的语法 +* tmux、文本编辑等的键盘快捷键 + +一个示例评论: + +> 要完全发挥功能,有太多小的"琐事"细节需要记住。即使经过这么多年,我有时仍会忘记 stderr 是 2 还是 1,或者忘记`>`和`>>`哪个是哪个。 + +### [切换终端很困难 (91)][4] + +人们谈到了在切换系统(例如家庭/工作电脑或 SSH 时)时遇到的困难: + +* 键盘快捷键的操作系统差异(如 Linux 与 Mac) +* 没有他们首选文本编辑器的系统("没有 vim"或"只有 vim") +* 同一命令的不同版本(如 Mac OS grep 与 GNU grep) +* 没有 tab 补全 +* 不习惯的 shell("zsh 和 bash 之间的微妙差异") + +以及同一系统内的差异,如分页器彼此不一致(git diff 分页器,其他分页器)。 + +一个示例评论: + +> 我习惯了 fish 和 vi 模式,但当我 ssh 进入服务器、容器时,这些都不可用。 + +### [颜色 (85)][5] + +关于颜色的许多问题,如: + +* 程序设置的颜色在浅色背景下不可读 +* 找到他们喜欢的配色方案(并使其在不同应用程序中一致工作) +* 在多层 SSH/tmux 等内部颜色不起作用 +* 不喜欢默认设置 +* 完全不想要颜色并努力关闭它 + +这个评论对我来说很有共鸣: + +> 在终端模拟器和 fish 之间以合理的方式配置我的终端主题(我多年前做过这件事,记得它既繁琐又麻烦,现在感觉我被锁定在当前主题中,因为它能工作,我害怕再次触碰任何那些配置)。 + +### [键盘快捷键 (84)][6] + +关于键盘快捷键的评论中,有一半是关于在 Linux/Windows 上,终端中的复制/粘贴键盘快捷键与操作系统其余部分不同。 + +除了复制/粘贴之外的其他键盘快捷键问题: + +* 在基于浏览器的终端中使用`Ctrl-W`并关闭窗口 +* 终端只支持有限的键盘快捷键(没有`Ctrl-Shift-`,没有`Super`,没有`Hyper`,许多`ctrl-`快捷键不可能,如`Ctrl-,`) +* 操作系统阻止你使用终端键盘快捷键(比如默认情况下 Mac OS 将`Ctrl+左箭头`用于其他用途) +* 在终端中使用 emacs 的问题 +* 退格键不工作(2) + +### [其他复制和粘贴问题 (75)][7] + +除了"复制和粘贴的键盘快捷键不同"之外,还有很多其他复制和粘贴问题,如: + +* 通过 SSH 复制 +* tmux 和终端模拟器以不同方式处理复制/粘贴 +* 处理多个不同的剪贴板(系统剪贴板、vim 剪贴板、Linux 上的"中键点击"剪贴板、tmux 的剪贴板等)并可能同步它们 +* 从终端复制时添加的随机空格 +* 粘贴多行命令,这些命令以可怕的方式自动运行 +* 希望有一种不使用鼠标复制文本的方法 + +### [可发现性 (55)][8] + +有很多关于这方面的评论,都归结为同一个基本抱怨——很难发现有用的工具或功能!这个评论基本上总结了一切: + +> 独立学习有多困难。我所知道的大部分都是多年来从随机人那里听到的各种东西的集合。 + +### [学习曲线陡峭 (44)][9] + +很多评论提到它通常有陡峭的学习曲线。几个示例评论: + +> 使用它 15 年后,我的使用速度并不比 5 年甚至 10 年前快多少。 + +以及 + +> 我知道通过学习更多关于快捷键和命令以及配置终端,我可以让我的生活更轻松,但我不花时间,因为感觉太 overwhelming 了。 + +### [历史记录 (42)][10] + +一些 shell 历史记录的问题: + +* 历史记录不在终端标签之间共享(16) +* 限制太短(4) +* 恢复终端标签时历史记录不被恢复 +* 因为终端崩溃而丢失历史记录 +* 不知道如何搜索历史记录 + +一个示例评论: + +> 直到我弄明白它,它浪费了我很多时间,而且仍然让我感到恼火的是,zsh 上的"history"缓冲区如此之小;我必须输入"history 0"才能获得任何有用长度的历史记录。 + +### [糟糕的文档 (37)][11] + +人们谈到: + +* 文档通常晦涩难懂 +* man 页面中缺乏示例 +* 没有 man 页面的程序 + +这是一个有代表性的评论: + +> 找到好的例子和文档。Man 页面通常不够,必须浏览 stack overflow + +### [回滚 (36)][12] + +关于回滚的一些问题: + +* 程序打印出太多数据,使你失去回滚历史 +* 调整终端大小会搞乱回滚 +* 缺乏时间戳 +* 在后台启动的 GUI 程序打印出的东西妨碍了其他程序的输出 + +一个示例评论: + +> 当调整终端大小(特别是:使其变窄)导致回滚内容的重新换行被破坏,因为命令根据终端窗口宽度格式化了它们的输出。 + +### ["感觉过时" (33)][13] + +很多评论提到终端感觉受到遗留决策的阻碍,以及用户经常需要学习感觉非常深奥的实现细节。一个示例评论: + +> 大部分遗留的东西,如果能有一个全新实现的 CLI 界面就太好了。 + +### [shell 脚本 (32)][14] + +对 POSIX shell 脚本有很多抱怨。普遍感觉是 shell 脚本很难,但切换到不同的不太标准的脚本语言(fish、nushell 等)也会带来自己的问题。 + +> Shell 脚本。我放弃 shell 脚本转向脚本语言的容忍度相当低。它太混乱且功能强大。搞砸可能代价高昂,所以我甚至不去尝试。 + +### [更多问题][15] + +一些被提及至少 10 次的更多问题: + +* (31) 命令行参数不一致:是-h 还是 help 还是--help? +* (24) 在不同系统之间保持 dotfiles 同步 +* (23) 性能(例如"我的 shell 启动时间太长") +* (20) 窗口管理(可能结合了 tmux 标签、终端标签和多个终端窗口。那个 shell 会话去哪了?) +* (17) 普遍感到害怕/不安("使用命令时可能会做一些神秘的坏事,而我将完全不知道如何修复或撤销它,甚至不知道发生了什么,这种令人衰弱的恐惧") +* (16) terminfo 问题("如果/当我尝试新的终端模拟器并 ssh 到其他地方时,必须了解 terminfo。") +* (16) 缺乏图像支持(sixel 等) +* (15) SSH 问题(比如当你失去 SSH 连接时必须重新开始) +* (15) 各种 tmux/screen 问题(例如 tmux 和终端模拟器之间缺乏集成) +* (15) 拼写错误和打字慢 +* (13) 终端因各种原因被搞乱(按`Ctrl-S`,`cat`一个二进制文件等) +* (12) shell 中的引用/转义 +* (11) 各种 Windows/PowerShell 问题 + +### [不适用 (122)][16] + +还有 122 个回答表示"没什么真正的问题"或"只是我不能在终端中做所有事情" + +一个示例评论: + +> 我想我已经找到了解决大多数/所有沮丧的方法 + +### [就是这些!][17] + +我不会对这些结果做太多评论,但这里有几个对我来说感觉相关的类别: + +* 记住语法和历史记录(通常你需要记住的东西是你以前运行过的东西!) +* 可发现性和学习曲线(缺乏可发现性肯定是使其难以学习的一大部分) +* "切换系统很困难"和"感觉过时"(30 或 40 年来没有真正改变的工具有很多问题,但它们确实倾向于无论你在什么系统上都_存在_,这非常有用,使它们难以停止使用) + +尝试以合理的方式对所有这些结果进行分类,真的让我对社会科学研究人员的技能有了更深的认识。 + +[1]: https://jvns.ca/terminal-survey/results-bsky +[2]: https://github.com/jvns/classificator +[3]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#remembering-syntax-115 +[4]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#switching-terminals-is-hard-91 +[5]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#color-85 +[6]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#keyboard-shortcuts-84 +[7]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#other-copy-and-paste-issues-75 +[8]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#discoverability-55 +[9]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#steep-learning-curve-44 +[10]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#history-42 +[11]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#bad-documentation-37 +[12]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#scrollback-36 +[13]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#it-feels-outdated-33 +[14]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#shell-scripting-32 +[15]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#more-issues +[16]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#n-a-122 +[17]: http://jvns.ca/blog/2025/02/05/some-terminal-frustrations/#that-s-all