4 Mac 终端定制,即使是老顽固也会喜欢

开源意味着我可以在任何终端上找到熟悉的 Linux 体验。
84 位读者喜欢这篇文章。
Getting started with Perlbrew

freephotocc 通过 Pixabay CC0

十年前,我开始了我的第一份工作,这份工作要求我使用 Linux 作为我笔记本电脑的操作系统。他们为我提供了多种变体,包括 Gentoo,如果我愿意的话,但由于我过去曾短暂使用过 Ubuntu,所以我选择了 Ubuntu Lucid Lynx 10.04。

我的终端,Konsole,使用了 Zenburn 主题,并且 Bash 提示符看起来像这样

machinename ~/path/to/folder $

现在,我正在 Mac 上运行,具体来说是 macOS Catalina,使用 iTerm2Zenburn 主题,以及 zsh 提示符,它看起来像这样

machinename ~/path/to/folder 
$

我认为在使用了近乎相同的提示符十年之后,我已经赢得了 *老顽固* 的称号,即使这只是表明我有一些与现在“酷孩子”的做法背道而驰的偏好和习惯。

为了证明我的“老顽固”观点,我想更改我的终端以匹配我旧的终端。在 Mac 上获得一个看起来和感觉都像 Lucid Lynx 的设置并不简单,而且花了一些时间。

我最近最大的改变是从 Bash 迁移到 zsh,并迁移了我的 Bash 小技巧。但这只是主要转变之一。我学到了许多新颖的教训,现在我将它们传授给你们,亲爱的读者。

Coreutils 允许不拘泥于标志顺序

从 Ubuntu 迁移到 macOS 并没有太大的转变,直到我开始觉得我正在失去我的 Unix-foo。我尝试运行像删除文件夹这样的基本操作,却被告知我错误地调用了 rm

事实证明,GNU 风格的实用程序可能看起来像 BSD 风格的实用程序,但最大的可用性差异之一是 *标志顺序*。未命名参数的列出顺序并不一致。例如:rm

这是熟悉的 GNU 风格的命令,用于删除目录

$ rm path/to/folder -rf

这与相同命令的 BSD 风格版本形成对比

$ rm path/to/folder -rf
rm: path/to/folder: is a directory
rm: -rf: No such file or directory

我通过 Homebrew 安装 Coreutils 来解决这个问题。这为 macOS 带来了 GNU 实用程序,并使标志顺序更加灵活,让我不必记住那些深深植根于我肌肉记忆中的命令的标志顺序。

iTerm2 功能强大

我不确定在任何操作系统中,高级用户会对默认终端感到满意。在 macOS 领域,我选择了 iTerm2,它比基本操作系统的终端应用程序提供了更大的灵活性。我最喜欢的 iTerm 强大功能之一是能够使用 Command+DCommand+Shift+D 来垂直和水平拆分窗格。还有很多技巧可以学习,但仅凭简单的拆分窗格就可以使 iTerm2 值得从默认选项切换过来。

上下文感知插件

即使像老顽固这样的用户也会自定义终端提示符的一个原因是获得一些情境感知。我喜欢终端给我提供上下文并回答所有想到的问题。不仅仅是我在哪个文件夹中,而是:我在哪台机器上?这是一个 Git 仓库吗?如果是,我在哪个分支中?我是否在 Python 虚拟环境中?

这些问题的答案属于一类可以称为“上下文感知插件”的终端扩展。

对于当前的 Git 分支,我使用了这个 parse_git_branch() 方法(如果您正在使用 Oh My Zsh,则有一个类似的插件)。对于 Python,virtualenv 会自动前缀到提示符。Oh My Zsh 有很多 插件,您一定能找到一些可以改善您生活的东西。

至于我的本地机器?我只是直接把它放在 PS1 格式中,因为我就这么简单,而且 macOS 真的 不允许你命名你的机器。

多行提示符很好

细心的读者可能会注意到,我的提示符在十年中的一个变化是,它现在是两行。这是一个最近的变化,我正在慢慢地爱上它,因为我之前提到的所有那些插件都使我的提示符变得非——常——长。您只能在文件系统中导航到一定深度,然后您就会开始遇到换行的命令输入,试图做任何基本的事情。随之而来的是偶尔的重绘问题和可读性问题。

我收到的关于解决这个问题的建议主要围绕着,“哦,你在用 zsh?用 Powerlevel10k!” 这对于那些不像我这样墨守成规的人来说很好。但我能够从这些主题中学习,并从中采纳一些建议。

我所做的是在我的提示符中的最后一个 $ 之前添加一个 $'\n',这使得我的上下文感知信息——当前机器、当前文件夹、当前 GitHub 分支、当前 virtualenv 等等——都可以放在一行上,然后我的命令就可以毫无问题地输入。

我发现的唯一问题是学习 *看* 哪里。我习惯了让我的眼睛从行的中心开始,因为那是提示符过去开始的地方。我正在慢慢学习向左看提示符,但这是一个缓慢的过程。我需要 undo 十年的眼睛训练。

使用适合你的工具

如果您喜欢某种风格或工具,那么您的这种偏好绝对是合理的。您可以尝试其他东西,但永远不要认为您必须使用最新和最棒的东西只是为了像“酷孩子”一样。您的风格和偏好可能会随着时间而改变,但永远不要被迫进行让您不舒服的改变。

下次加入我们,届时 Katie 阿姨将抱怨 IDE。

接下来阅读
标签
User profile image.
多年来,Katie 担任过许多不同的角色。她之前曾是多种语言的软件开发人员,多个操作系统的系统管理员,以及多个不同主题的演讲者。当她不改变世界时,她喜欢烹饪、编织挂毯,以及观察各种应用程序堆栈如何处理表情符号。

3 条评论

这篇文章非常贴切。感谢您记录您的经验。

你是什么意思,macOS 真的不允许你命名你的机器?除非我遗漏了什么,否则我命名了我拥有的每一台 Mac。

永远不要使用 Zsh。 https://rwx.gg/advice/dont/zsh
Alacritty 在每个基准测试中都击败 iTerm2,并且可以使用 alacritty.yml 修改脚本从命令行进行配置。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.