<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MacOS on Veno's Blog</title><link>https://v3n0.com/tags/macos/</link><description>Recent content in MacOS on Veno's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Mon, 10 Nov 2025 02:00:00 +0800</lastBuildDate><atom:link href="https://v3n0.com/tags/macos/index.xml" rel="self" type="application/rss+xml"/><item><title>Macbook 上手 - 基础使用和开发环境搭建</title><link>https://v3n0.com/post/2025/my-macbook-startup/</link><pubDate>Mon, 10 Nov 2025 02:00:00 +0800</pubDate><guid>https://v3n0.com/post/2025/my-macbook-startup/</guid><description>&lt;img src="https://v3n0.com/post/2025/my-macbook-startup/image.png" alt="Featured image of post Macbook 上手 - 基础使用和开发环境搭建" /&gt;&lt;p&gt;入手了 Macboook Air M4，感觉是受益非常大的一次购买。&lt;/p&gt;
&lt;p&gt;此前习惯使用的开发环境是，台式机 + x86笔记本的 Archlinux。主要痛点有两个。&lt;/p&gt;
&lt;p&gt;一是续航问题，也是最大的痛点。宿舍环境并不适合工作，因此我从起床到踩着门禁回宿舍基本不想呆在宿舍。经常的情况是，上课上一半电脑没电，只能听课。或者电脑没电，被迫回宿舍用台式，耳边是舍友游戏，同时还得时刻听网课等签到码，这种情况下其实根本无法专注开发。尝试使用平板串流回宿舍，但网络波动严重。使用平板 termux + neovim，配置太折腾，且最终体验并不好，不希望大部分时间用来配置环境而不是用来开发。&lt;/p&gt;
&lt;p&gt;二是环境问题。Archlinux 包管理器的确方便。但不管怎样我仍然承担太多关于我自己的电脑系统运维和配置的任务，需要关注各种开发无关的事情，诸如 KDE 桌面可能滚炸，某个驱动不能直接 Syu 需要另外配置等等。只要出现一次桌面滚炸，往往意味着一个整个下午甚至更长时间都不能用于开发而是修环境，意味着延误开发进度，如果正逢 DDL，那么就死了。Archlinux 更适合有大量空闲时间可以用来精心配置自己的系统的人。Nix 这一套其实可能不错，但感觉上手需要大量时间，配置同样又要时间。有考虑过从 Archlinux 切换到 Fedora，但这同样需要我花时间，用于数据备份，重装系统，重新配置整个环境。&lt;/p&gt;
&lt;p&gt;Macbook Air 解决了我两个最大的痛点。&lt;/p&gt;
&lt;p&gt;本文记录了入手 Macbook 之后，我怎样搭建了我的开发环境，把它变成了一台生产力机器。&lt;/p&gt;
&lt;h2 id="桌面操作和配置"&gt;桌面操作和配置
&lt;/h2&gt;&lt;h3 id="触控板操作"&gt;触控板操作
&lt;/h3&gt;&lt;p&gt;设置中搜索“触控板手势”看到所有的触控板操作。&lt;/p&gt;
&lt;p&gt;很喜欢 macOS 的全屏应用管理。三指上滑调度中心，左右横扫切换全屏应用，比较舒适。&lt;/p&gt;
&lt;h3 id="键盘"&gt;键盘
&lt;/h3&gt;&lt;p&gt;macOS 中的 control, option, command 逻辑大致是：&lt;/p&gt;
&lt;p&gt;Command (⌘)：在 macOS 里是主修饰键。你在 Windows/Linux 里平常用 Ctrl+C / Ctrl+V，到了 mac 上就是 ⌘C / ⌘V。所以 语义角色 上 Command ≈ Ctrl（别的系统的）。&lt;/p&gt;
&lt;p&gt;Control (⌃)：是更底层的控制信号键，确实就是发 Ctrl 字符给终端那种。在 shell 或 vim 里，Ctrl+A / Ctrl+E 就是走 Emacs 控制序列那一套。&lt;/p&gt;
&lt;p&gt;Option (⌥)：等价于 Alt。区别在于它默认还参与输入法（比如打出特殊符号或中文输入法的候选），在终端里要当作真正的 Alt 用，需要在终端设置里打开 “Use Option as Meta key”。&lt;/p&gt;
&lt;p&gt;这样的划分其实很不错，Shell 里 Ctrl+C 不会和 ⌘C 打架。&lt;/p&gt;
&lt;h4 id="输入法"&gt;输入法
&lt;/h4&gt;&lt;p&gt;添加输入法和更改其设置，选取苹果菜单  &amp;gt;“系统设置”，然后点按边栏中的“键盘” 。（你可能需要向下滚动。）前往“文字输入”，然后点按“编辑”。&lt;/p&gt;
&lt;h4 id="快捷键"&gt;快捷键
&lt;/h4&gt;&lt;p&gt;设置 -&amp;gt; 键盘 -&amp;gt; 键盘快捷键&lt;/p&gt;
&lt;p&gt;可以在其中看看 macOS 的窗口管理操作快捷键。&lt;/p&gt;
&lt;h4 id="fn-lock"&gt;fn lock
&lt;/h4&gt;&lt;p&gt;键盘快捷键 -&amp;gt; 将 F1, F2 等用作标准功能键&lt;/p&gt;
&lt;p&gt;开启后调整亮度等需要按住 fn + f1。&lt;/p&gt;
&lt;h4 id="fn-切换输入法中英-改为-capslock"&gt;fn 切换输入法，中/英 改为 Capslock
&lt;/h4&gt;&lt;p&gt;默认 fn 键是打开表情符号选单。我喜欢让它变为更改输入法，作为一个单独按键，不管怎样都不会和 shift，ctrl，ctrl+space(VSCode 的补全) 这三个其他软件常用的快捷键打架了，属于是我在 Windows 上没能解决的一个问题。 打开表情选单使用&lt;code&gt;⌘ ⇧ .&lt;/code&gt;（使用 Raycast）&lt;/p&gt;
&lt;p&gt;键盘 -&amp;gt; 键盘快捷键 -&amp;gt; 输入法，将“选择上一个输入法”和“选择‘输入法’菜单中的下一个输入法”取消勾选。&lt;/p&gt;
&lt;p&gt;键盘 -&amp;gt; 按下 fn 键时 -&amp;gt; 更改输入法。&lt;/p&gt;
&lt;p&gt;键盘 -&amp;gt; 文字输入 -&amp;gt; 输入法 -&amp;gt; 编辑 -&amp;gt; 所有输入法 -&amp;gt; 使用 中/英 键切换 ABC 输入法&lt;/p&gt;
&lt;p&gt;这里的逻辑其实是，fn 键切换 ABC 和 拼音，而在拼音输入法中，按下中英键仍然切换中英文，但是这是在中文输入法中输入英文。&lt;/p&gt;
&lt;h2 id="包管理"&gt;包管理
&lt;/h2&gt;&lt;p&gt;使用 &lt;a class="link" href="https://brew.sh/" target="_blank" rel="noopener"
&gt;Homebrew&lt;/a&gt;。macOS 上最方便的包管理器，我的软件安装几乎完全由它完成，没有使用过 app store。&lt;/p&gt;
&lt;p&gt;macOS 上还可以使用 nix 包管理器，等到有闲工夫折腾的时候试试迁移到上面。&lt;/p&gt;
&lt;p&gt;⌘ + Space 打开终端&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/bin/bash -c &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;以后基本上只要 &lt;code&gt;brew install&lt;/code&gt;, &lt;code&gt;brew upgrade&lt;/code&gt;, &lt;code&gt;brew search&lt;/code&gt;就行。&lt;/p&gt;
&lt;h2 id="安装字体"&gt;安装字体
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install font-jetbrains-mono-nerd-font
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="开发环境"&gt;开发环境
&lt;/h2&gt;&lt;h3 id="macos-的文件系统"&gt;macOS 的文件系统
&lt;/h3&gt;&lt;p&gt;macOS 和 linux 都是 Unix，但区别其实还是有挺多。列出几点。&lt;/p&gt;
&lt;h4 id="大小写敏感"&gt;大小写敏感
&lt;/h4&gt;&lt;p&gt;默认 macOS（APFS）是不区分大小写的，foo.txt 和 Foo.txt 是同一个文件，所以代码库如果有类似文件名（尤其前端资源、模块名），在 macOS 上可能不会报错，但在 Linux 部署就炸。&lt;/p&gt;
&lt;h4 id="ds_store"&gt;.DS_Store
&lt;/h4&gt;&lt;p&gt;Finder 会在每个目录下生成 .DS_Store 文件，用于存储该目录的显示设置等信息。如果不想让 git 提交这些文件，可以在全局 gitignore 里添加一行 &lt;code&gt;.DS_Store&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git config --global core.excludesfile ~/.gitignore_global
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;.DS_Store&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.gitignore_global
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;总之就是不要用 Finder，这个东西防不胜防。&lt;/p&gt;
&lt;h4 id="符号链接与文件元信息"&gt;符号链接与文件元信息
&lt;/h4&gt;&lt;p&gt;macOS 文件系统支持&amp;quot;扩展属性(xattrs)&amp;quot; 与&amp;quot;资源分叉resource fork&amp;quot;，一些工具(尤其是 Finder)会携带 &lt;code&gt;._filename&lt;/code&gt; 的元文件。&lt;/p&gt;
&lt;p&gt;使用 macOS 的 Finder 压缩一个文件夹：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;foo/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── bar.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;结果生成的 zip 里会有：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bar.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;__MACOSX/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;__MACOSX/foo/._bar.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些 ._bar.txt 就是存资源分叉或扩展属性的。总之不要用 Finder。&lt;/p&gt;
&lt;h4 id="路径与权限模型"&gt;路径与权限模型
&lt;/h4&gt;&lt;p&gt;macOS 路径中 / 一样分隔，但默认用户家目录权限比 Linux 更严格（SIP 保护 + sandbox）。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/usr&lt;/code&gt;(除了&lt;code&gt;/usr/local&lt;/code&gt;), &lt;code&gt;/System&lt;/code&gt;, &lt;code&gt;/bin&lt;/code&gt;, &lt;code&gt;/sbin&lt;/code&gt; 等在 macOS 是受保护的系统卷，即使 root 都不能随便写。&lt;/p&gt;
&lt;p&gt;推荐把开发环境放在 &lt;code&gt;/usr/local&lt;/code&gt; 或 &lt;code&gt;$HOME/.local&lt;/code&gt; 下。&lt;/p&gt;
&lt;h3 id="shell"&gt;Shell
&lt;/h3&gt;&lt;p&gt;macOS 默认使用 zsh。&lt;/p&gt;
&lt;h4 id="zim-framework"&gt;Zim Framework
&lt;/h4&gt;&lt;p&gt;另见这一篇文章：&lt;a class="link" href="https://v3n0.com/post/2025/zim-makes-my-life-easier/" target="_blank" rel="noopener"
&gt;我的 Zim Framework 安装和配置&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="lazygit"&gt;lazyGit
&lt;/h4&gt;&lt;p&gt;&lt;a class="link" href="https://github.com/jesseduffield/lazygit" target="_blank" rel="noopener"
&gt;lazygit&lt;/a&gt; 是非常好用的 Git TUI，我很爱用。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install lazygit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;我个人非常常用，所以给它加个别名&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;alias lg=&amp;#39;lazygit&amp;#39;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.zshrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="yazi"&gt;Yazi
&lt;/h4&gt;&lt;p&gt;&lt;a class="link" href="https://yazi-rs.github.io/" target="_blank" rel="noopener"
&gt;Yazi&lt;/a&gt; 是终端文件管理器。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install yazi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="alacritty"&gt;Alacritty
&lt;/h3&gt;&lt;p&gt;&lt;a class="link" href="https://alacritty.org/" target="_blank" rel="noopener"
&gt;Alacritty&lt;/a&gt; 是一个终端模拟器，轻量好用且非常非常快，极简，没有携带任何提供终端以外的功能(分屏，标签页）。如果更喜欢终端分屏而不是 tmux 的话建议另行使用 kitty。&lt;/p&gt;
&lt;h4 id="设置字体"&gt;设置字体
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# ~/.config/alacritty/alacritty.toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;font&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;size&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;16.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;font&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;normal&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;family&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;JetBrainsMono Nerd Font&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Regular&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;font&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;family&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;JetBrainsMono Nerd Font&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Bold&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;font&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;italic&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;family&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;JetBrainsMono Nerd Font&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Italic&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;font&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bold_italic&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;family&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;JetBrainsMono Nerd Font&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Bold Italic&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="option-键映射为-alt"&gt;option 键映射为 alt
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# ~/.config/alacritty/alacritty.toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;window&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;option_as_alt&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Both&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="ssh-到-rhel-等系统的渲染错误问题"&gt;ssh 到 RHEL 等系统的渲染错误问题
&lt;/h4&gt;&lt;p&gt;当你在本机运行 Alacritty 并 SSH 到远程主机时，本机的 Alacritty 会设置环境变量：&lt;code&gt;TERM=alacritty&lt;/code&gt;。这告诉远程系统：“我是一个叫 alacritty 的终端，请用这个类型的渲染方式来处理颜色、光标移动、退格、清屏等控制序列。”&lt;/p&gt;
&lt;p&gt;但问题是 Red Hat 默认的 /usr/share/terminfo 里没有 alacritty 这个定义。&lt;/p&gt;
&lt;p&gt;所以它看到 $TERM=alacritty 时，只能“随便猜”或者退回到某种兼容模式（通常是 dumb、xterm 或 vt100），导致：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;颜色错乱（它不理解 256 色甚至 true color 的控制码）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Backspace 逻辑不对（字符删除信号被解释成插入空格）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;提示符/补全的高亮样式全变色（因为属性码错位）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;infocmp alacritty &amp;gt; alacritty.info
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;scp alacritty.info user@rhel:/tmp/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh user@rhel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tic -x /tmp/alacritty.info
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="容器"&gt;容器
&lt;/h3&gt;&lt;p&gt;macOS 上无法直接使用 linux 内核功能，因此容器和 windows 一样需要使用虚拟机实现，因此 macOS 上的容器不仅需要 CLI 还需要虚拟机 daemon。&lt;/p&gt;
&lt;p&gt;最主流的容器虚拟机的选择是 Docker Desktop + Docker CLI&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install --cask docker &lt;span class="c1"&gt;# Docker Desktop&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install docker docker-compose &lt;span class="c1"&gt;# Docker CLI 和 compose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;虽然所有的操作完全可以使用 docker CLI 完成，但它总归会让人需要见到 GUI。&lt;/p&gt;
&lt;p&gt;如果想纯 CLI，macOS 上另一个容器虚拟机的比较流行的选择是开源的 &lt;a class="link" href="https://github.com/abiosoft/colima" target="_blank" rel="noopener"
&gt;colima&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install docker docker-compose colima
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要启动容器前，可以 &lt;code&gt;colima start&lt;/code&gt;，不需要的时候 &lt;code&gt;colima stop&lt;/code&gt;。毕竟是虚拟机，平时不用的时候可以稍微省点电。&lt;/p&gt;
&lt;p&gt;另一个选择是 Orbstack，个人免费使用但有少些限制，商业付费。据说比 colima 使用体验丝滑很多，但我还没尝试过。目前 colima 对我来说够用。&lt;/p&gt;
&lt;h2 id="其他效率工具"&gt;其他效率工具
&lt;/h2&gt;&lt;p&gt;下面的工具只有 Raycast 是我常用的，另外几个我还没折腾过。&lt;/p&gt;
&lt;h3 id="raycast"&gt;Raycast
&lt;/h3&gt;&lt;p&gt;Raycast 是 macOS 上的一款快速启动器，表面看似乎只是 Spotlight 的替代品（即 ⌘ Space），但实际上更像一个开发者取向的系统操作平台，可以说是用键盘控制 macOS 的一切。不仅能打开应用、搜索文件，还能直接操作系统功能、运行命令、调用 API、触发脚本、访问第三方服务。
所有操作几乎都通过快捷键完成。&lt;/p&gt;
&lt;p&gt;个人使用免费，功能完整。Pro 订阅才包括云同步、AI 助手、共享命令等功能，不过这些功能都可有可无，免费版已经足够强大。&lt;/p&gt;
&lt;h3 id="hammerspoon"&gt;Hammerspoon
&lt;/h3&gt;&lt;p&gt;可以 lua 脚本接管各种系统级别输入，使得 macOS 实际上也可以被高度定制化。比如让窗口自动平铺、对齐、调整大小、移动到指定屏幕，监听 Wi-Fi 状态切换、USB 设备插拔、屏幕变化、甚至电量和音量事件，然后自动执行脚本。&lt;/p&gt;
&lt;h3 id="bettertouchtool"&gt;BetterTouchTool
&lt;/h3&gt;&lt;p&gt;能拦截 Force Click、三指手势等，并重新映射，但是收费。&lt;/p&gt;
&lt;h3 id="scroll-reverser"&gt;Scroll Reverser
&lt;/h3&gt;&lt;p&gt;专门分开触控板和鼠标滚轮的滚动方向。&lt;/p&gt;
&lt;h3 id="karabiner-elements"&gt;Karabiner-Elements
&lt;/h3&gt;&lt;p&gt;能改键盘、鼠标、触控板底层事件。&lt;/p&gt;</description></item><item><title>我的 Zim Framework 安装和配置</title><link>https://v3n0.com/post/2025/zim-makes-my-life-easier/</link><pubDate>Mon, 27 Oct 2025 15:32:11 +0800</pubDate><guid>https://v3n0.com/post/2025/zim-makes-my-life-easier/</guid><description>&lt;p&gt;初次知道 zim 是在 &lt;a class="link" href="https://arch.icekylin.online/guide/advanced/beauty-3.html#_2-zsh-%E7%BE%8E%E5%8C%96" target="_blank" rel="noopener"
&gt;Archlinux 简明指南&lt;/a&gt;。体感上确实比 Oh-my-zsh 快一些，主要快在启动速度。这一点在使用 tmux 之类的时候，频繁创建关闭终端，体感上会比较明显。&lt;/p&gt;
&lt;p&gt;之前 Arch 上的 zim 配置了什么东西没有记下来，早就忘了，没记错的话就几乎只是跟着上面的教程装了个 p10k。现在入手了 Macbook air，准备把自己的工作流配置都记录一下。这篇博客会是其中的一篇。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="zim-安装"&gt;Zim 安装
&lt;/h2&gt;&lt;p&gt;Zim Framework 官网上的指令:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh &lt;span class="p"&gt;|&lt;/span&gt; zsh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重进终端，可以看到终端样式已经变了。&lt;code&gt;.zshrc&lt;/code&gt; 文件中也多出了 zim 生成的配置内容。大部分一般不用更改。我习惯把编辑模式改成 vi 模式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ~/.zshrc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Set editor default keymap to emacs (`-e`) or vi (`-v`)Vj&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bindkey -v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;同时 zim 安装后创建了 &lt;code&gt;.zimrc&lt;/code&gt;。zim 插件的安装方式基本上就是，在这里面加 zmodule，然后 &lt;code&gt;zimfw install&lt;/code&gt; 一下。&lt;/p&gt;
&lt;p&gt;一般只要仓库根目录存在一个可以被 source 的 &lt;code&gt;.zsh&lt;/code&gt; 文件，就可以被视作一个 zmodule。只要在 &lt;code&gt;.zimrc&lt;/code&gt; 添加: &lt;code&gt;zmodule author/repo&lt;/code&gt;，然后 zim 会自己 clone, 加载。&lt;/p&gt;
&lt;p&gt;zim 默认提供了很多指令别名。见: &lt;a class="link" href="https://zimfw.sh/docs/cheatsheet/" target="_blank" rel="noopener"
&gt;Zim Framework Docs - Cheatsheet&lt;/a&gt;。个人不常用。&lt;/p&gt;
&lt;h2 id="插件配置"&gt;插件配置
&lt;/h2&gt;&lt;h3 id="powerlevel10k"&gt;powerlevel10k
&lt;/h3&gt;&lt;p&gt;一个比较好用的 zsh 主题。已经停止维护但够稳定好用。以后也许会试试 Starship，但我懒得折腾。&lt;/p&gt;
&lt;p&gt;想通过 zim 安装其他插件&lt;/p&gt;
&lt;p&gt;安装前建议先安装 JetBrainsMono Nerd Font。&lt;/p&gt;
&lt;p&gt;我使用 Alacritty，设置字体可以修改 &lt;code&gt;~/.config/alacritty/alacritty.toml&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# ~/.config/alacritty/alacritty.toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;font&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;size&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;16.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;font&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;normal&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;family&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;JetBrainsMono Nerd Font&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Regular&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;font&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;family&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;JetBrainsMono Nerd Font&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Bold&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;font&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;italic&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;family&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;JetBrainsMono Nerd Font&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Italic&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;font&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bold_italic&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;family&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;JetBrainsMono Nerd Font&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Bold Italic&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;要使用 zim 安装 p10k，在 .zimrc 中添加：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ~/.zimrc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zmodule romkatv/powerlevel10k --use degit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后 &lt;code&gt;zimfw install&lt;/code&gt;，并重启终端。会进入 p10k 的初始化配置流程。选择自己喜欢的样式。&lt;/p&gt;
&lt;h3 id="fzf"&gt;fzf
&lt;/h3&gt;&lt;p&gt;&lt;a class="link" href="https://junegunn.github.io/fzf/" target="_blank" rel="noopener"
&gt;fzf&lt;/a&gt; 是一个通用的命令行模糊查找工具。&lt;/p&gt;
&lt;p&gt;首先需要安装 fzf。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install fzf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之后在终端中输入 fzf 会发现已经可用。&lt;/p&gt;
&lt;p&gt;基本上，你可以将 fzf 视为“grep”的交互式版本，我们现在只是安装了这个程序。&lt;/p&gt;
&lt;p&gt;根据 fzf 文档，我们可以&lt;a class="link" href="https://junegunn.github.io/fzf/shell-integration/" target="_blank" rel="noopener"
&gt;在 Shell 中集成 fzf&lt;/a&gt;，可以用到一些好用的快捷键。官方文档的方式是在 &lt;code&gt;.zshrc&lt;/code&gt; 中添加 &lt;code&gt;source &amp;lt;(fzf --zsh)&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;但使用 zim 管理，我们可以在 &lt;code&gt;.zimrc&lt;/code&gt; 中添加：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ~/.zimrc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# fzf &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zmodule fzf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zmodule Aloxaf/fzf-tab
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中第二个插件可以让 fzf 接管终端中的 tab 操作。&lt;/p&gt;
&lt;p&gt;现在可以使用文档中描述的快捷键了。&lt;/p&gt;
&lt;p&gt;对于 macOS，其中的 Alt+C 尝试用 option+C 会发现输入的是 C 的特殊字符。实际上，会发现可以用 esc+C 或者先按 ESC 再按 C 来替代。早年终端没有独立的 Alt 键，有人约定 Alt+X 等同于先发一个 ESC 再发一个 X。后面为了兼容依旧沿用这个设定。&lt;/p&gt;
&lt;p&gt;我使用的是 alacritty，可以添加以下配置&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# ~/.config/alacritty/alacritty.toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;window&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;option_as_alt&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Both&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="语法高亮"&gt;语法高亮
&lt;/h3&gt;&lt;p&gt;据 &lt;a class="link" href="https://www.bilibili.com/video/BV1fdTfzeE8X/?share_source=copy_web&amp;amp;vd_source=02c8907d23d01f0c75f46a7c1a61accf" target="_blank" rel="noopener"
&gt;TheCW 的一个视频&lt;/a&gt;所说，用这个语法高亮会更快一点。我跟风做了。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ~/.zimrc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# zmodule zsh-users/zsh-syntax-highlighting&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zmodule zdharma-continuum/fast-syntax-highlighting
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;更多的插件可以自己探索一下。比如看看 &lt;a class="link" href="https://zimfw.sh/docs/modules/" target="_blank" rel="noopener"
&gt;Zim Framework - Module&lt;/a&gt;, 看看有什么官方维护的 Zim 插件，或是看看别的技术佬用了啥。对我自己而言，已经不想再折腾这那，够用了就行。&lt;/p&gt;</description></item></channel></rss>