换了最新款的 MacBook Pro。每次像这样从头配置新设备时,几乎都会想要推翻之前的技术栈重来,这次也不例外。不禁感受到每过几年,自己对技术的思考和理解都会有天翻地覆的变化
期望下一次配置新的设备,我能够只推翻很少、甚至不推翻那些之前选择的技术栈。所以来分享下这次迁移中的一些想法,和大佬们对对答案
首先我弃用了 MacPort 包管理器和 oh-my-zsh。之前选择 MacPort 主要是因为了解到 Homebrew 默认往 /usr/local/ 目录写,带来了很多坑。而这次重新看了下 Homebrew,发现他们在 Apple Silicon 芯片的机型上已经把默认目录改到了 /opt/homebrew/,那我用公司发的 M1 办公这些年吃的苦真是白吃了……
选择 Homebrew 最主要是为了 **reprovisionable**,终于我不用一个一个去找那些没有上架 App Store 的软件的官网,然后再逐个下载安装了。这次迁移过后,未来在新环境要把需要的 GUI 应用装回来就只需要 brew install --cask 一下就好,这是 MacPort 所缺少的
而放弃 oh-my-zsh 是因为它实在太“大”了,从插件管理到 prompt,它几乎把一切都包揽了。当我想要切换到一些轻量级的插件管理或者 prompt 实现时,会发现自己其实并没有真的减负,反而只是增加了复杂度
而且,全新安装的环境只是刚刚装完 oh-my-zsh,~/.zshrc 就已经写上了一堆乱七八糟的配置。等用过几年装上过一些插件又卸载过一些插件后,这个配置文件已经是彻彻底底的糊涂账。哪些行是谁在管理,哪些行其实已经被弃用,插件的 init 顺序是不是合理等等,都很难再理清楚。既不 reprovisionable,也不 anti-hysteresis
这次我选择从零开始,只添加自己明确需要的功能。像 oh-my-zsh 这种黑箱我用好几年下来,其实并没有掌握多少它预置的很多实用功能,反倒是在每次看似微不足道的等待中浪费了不少时间
给 zsh 换皮换的是 starship.rs,启动够快又有合理的默认配置,不用浪费太多时间定制。而在插件管理上我着实犹豫了很久。几年时间没看,才知道著名的 antigen 先是被 antibody 取代,而后者又被 antidote 取代了。不禁感慨 zsh 插件社区实在是太碎片化了,让人眼花缭乱不说,根本无法预测是不是没过几年就要再搬一次家
犹豫了好久要不要选 antidote,但 zimfw 看起来不仅性能比它更强一点点,而且 star 数和社区活跃度也更高。最关键的是,antidote 正在开发 2.0 版本,不想入了坑没多久就要再去迁移,还是算了
最后最重要的当然是自动补全。本来一开始我以为这会是道开放性题目。在一大堆实现里纠结了半天最后选了 zsh-autocomplete。结果后来我新发现的两款插件居然都依赖另一个叫做 zsh-autosuggestions 插件。而等我接下来介绍完这两款插件,说不定你也会和我一样认为这道题其实成为了单选题:
第一个插件是 olets/zsh-autosuggestions-abbreviations-strategy,顾名思义它的作用是让 zsh 自动补全时能够提示缩写。什么是缩写呢?在 olets/zsh-abbr 的 README 里,下面这段话说动了我:
不过这个插件不够开箱即用,全新安装不包括任何缩写,只是提供了工具可以将 zshrc 之类地方的 alias 转换成缩写。需要之后有空去 oh-my-zsh 之类的地方扒一点 alias 过来了
第二个插件就牛逼了,yetone 大佬写的 smart-suggestion。大佬不仅写了 avante.nvim 让我可以卸载 Visual Studio Code,还写了这个插件杀死了 Warp。我都不敢想大佬下一个杀掉的是什么……
不过像我一样因为有了 smart-suggestion 就放心的把默认终端从 Warp 换成 Ghostty 的朋友要注意:smart-suggestion 默认开启 proxy mode,会起一个新的 zsh shell。在这个新的子 shell 里,Ghostty 的 shell-integration-features 全都会失效。我拉着 AI 聊了半天,也没想出什么能解决这个问题的思路,目前只能先把 proxy mode 关掉
最后再把 SukkaW/zsh-proxy 插件装好,我心目中对 zsh 最低限度的调校就完成了。当然还有很多地方可以更近一步,只是这些年我的运维哲学慢慢转向了大道至简,正所谓只要我根本妹有技术栈,你就别想推翻过去的我。所以最后把 yazi 装上,就给这一切画上句号吧
// 本文也是第一次用 Wispr Flow 取代以往码字方式的尝试。感觉一旦打字这块的瓶颈解除了,反倒是脑子这块的瓶颈暴露出来了。这次体验很不理想,到最后一大半的内容还是敲键盘打的
期望下一次配置新的设备,我能够只推翻很少、甚至不推翻那些之前选择的技术栈。所以来分享下这次迁移中的一些想法,和大佬们对对答案
首先我弃用了 MacPort 包管理器和 oh-my-zsh。之前选择 MacPort 主要是因为了解到 Homebrew 默认往 /usr/local/ 目录写,带来了很多坑。而这次重新看了下 Homebrew,发现他们在 Apple Silicon 芯片的机型上已经把默认目录改到了 /opt/homebrew/,那我用公司发的 M1 办公这些年吃的苦真是白吃了……
选择 Homebrew 最主要是为了 **reprovisionable**,终于我不用一个一个去找那些没有上架 App Store 的软件的官网,然后再逐个下载安装了。这次迁移过后,未来在新环境要把需要的 GUI 应用装回来就只需要 brew install --cask 一下就好,这是 MacPort 所缺少的
而放弃 oh-my-zsh 是因为它实在太“大”了,从插件管理到 prompt,它几乎把一切都包揽了。当我想要切换到一些轻量级的插件管理或者 prompt 实现时,会发现自己其实并没有真的减负,反而只是增加了复杂度
而且,全新安装的环境只是刚刚装完 oh-my-zsh,~/.zshrc 就已经写上了一堆乱七八糟的配置。等用过几年装上过一些插件又卸载过一些插件后,这个配置文件已经是彻彻底底的糊涂账。哪些行是谁在管理,哪些行其实已经被弃用,插件的 init 顺序是不是合理等等,都很难再理清楚。既不 reprovisionable,也不 anti-hysteresis
这次我选择从零开始,只添加自己明确需要的功能。像 oh-my-zsh 这种黑箱我用好几年下来,其实并没有掌握多少它预置的很多实用功能,反倒是在每次看似微不足道的等待中浪费了不少时间
给 zsh 换皮换的是 starship.rs,启动够快又有合理的默认配置,不用浪费太多时间定制。而在插件管理上我着实犹豫了很久。几年时间没看,才知道著名的 antigen 先是被 antibody 取代,而后者又被 antidote 取代了。不禁感慨 zsh 插件社区实在是太碎片化了,让人眼花缭乱不说,根本无法预测是不是没过几年就要再搬一次家
犹豫了好久要不要选 antidote,但 zimfw 看起来不仅性能比它更强一点点,而且 star 数和社区活跃度也更高。最关键的是,antidote 正在开发 2.0 版本,不想入了坑没多久就要再去迁移,还是算了
最后最重要的当然是自动补全。本来一开始我以为这会是道开放性题目。在一大堆实现里纠结了半天最后选了 zsh-autocomplete。结果后来我新发现的两款插件居然都依赖另一个叫做 zsh-autosuggestions 插件。而等我接下来介绍完这两款插件,说不定你也会和我一样认为这道题其实成为了单选题:
第一个插件是 olets/zsh-autosuggestions-abbreviations-strategy,顾名思义它的作用是让 zsh 自动补全时能够提示缩写。什么是缩写呢?在 olets/zsh-abbr 的 README 里,下面这段话说动了我:
和别名一样,缩写可以节省按键次数。不同的是,缩写可以在命令历史中留下直观易懂的记录,方便在其他电脑上使用或与同事分享。别名可能会让你忘记完整的命令,而缩写则能在为你节省输入的同时帮助你学习完整的命令。
不过这个插件不够开箱即用,全新安装不包括任何缩写,只是提供了工具可以将 zshrc 之类地方的 alias 转换成缩写。需要之后有空去 oh-my-zsh 之类的地方扒一点 alias 过来了
第二个插件就牛逼了,yetone 大佬写的 smart-suggestion。大佬不仅写了 avante.nvim 让我可以卸载 Visual Studio Code,还写了这个插件杀死了 Warp。我都不敢想大佬下一个杀掉的是什么……
不过像我一样因为有了 smart-suggestion 就放心的把默认终端从 Warp 换成 Ghostty 的朋友要注意:smart-suggestion 默认开启 proxy mode,会起一个新的 zsh shell。在这个新的子 shell 里,Ghostty 的 shell-integration-features 全都会失效。我拉着 AI 聊了半天,也没想出什么能解决这个问题的思路,目前只能先把 proxy mode 关掉
最后再把 SukkaW/zsh-proxy 插件装好,我心目中对 zsh 最低限度的调校就完成了。当然还有很多地方可以更近一步,只是这些年我的运维哲学慢慢转向了大道至简,正所谓只要我根本妹有技术栈,你就别想推翻过去的我。所以最后把 yazi 装上,就给这一切画上句号吧
// 本文也是第一次用 Wispr Flow 取代以往码字方式的尝试。感觉一旦打字这块的瓶颈解除了,反倒是脑子这块的瓶颈暴露出来了。这次体验很不理想,到最后一大半的内容还是敲键盘打的