為了舒適來調整室內裝潢——那你調過終端機嗎?
當你每天的工作的地方從工作桌走向 Terminal,你有沒有想過怎麼裝潢你的 Terminal
偶爾有人看到我的螢幕會問:你的終端機怎麼長這樣?認真覺得這題很難答。
2022 年機器學習正紅時,順手學了一下 Python,有段時間我會用終端機 + Jupyter notebook 來處理資料,那時我慢慢建立起對終端機的熟悉度。
後來就跟著網路教學,覺得好看就按圖索驥改了過去。

1.1 看的真正意思,是資訊密度
也剛好藉這次機會,認真跟 AI 討論才知道,「資訊密度」才是關鍵,而非單純的美觀,那些漸層配色…等。
一眼拿到有用的資訊,而不是每次都得動手去問:
我是誰?我在哪?我在幹嘛?
拿我現在設定的主題「agnoster」來說,會在你打指令之前就先告訴你:
- 你現在在哪個 git 分支——不用再敲
git branch去問 - 這個 working tree 有沒有沒 commit 的改動——顏色會變,commit 完自己恢復乾淨
- 你在哪個目錄——太長的絕對路徑自動折疊,不佔掉一整行
這些資訊,以前如果我不敲指令我是不知道的,現在只要眼睛看就知道,我的注意力就省下來留給真正要想的事,而且我要知道我還要查指令,很碎片。
1.2 好用的意思是:多機多環境下降低摩擦力
儘管在 2026 的現在,我日常大部分指令是 AI 在打的,但真的輪到我親自進終端機的時刻,往往是事情怪怪的時候,某台機器或服務的行為不對勁。那種時刻你最需要的,正是一眼看懂現場:我在哪台機器、哪個分支、有沒有沒 commit 的東西。
然後遠端是沒有 GUI 的,這時候就是下意識的使用 nano 甚至是 sudo nano 因為沒有權限。在 Claude Code/ Codex/ OpenCode Booming 的現在, 終端機變得更重要了,它是你唯一能看到機器核心在幹嘛的地方。
而且說實話——在 Debug 的時候自己還能親自 key,還是覺得自己滿帥的。
還有一個隱形成本,當我同時開著本機、兩台 VPS、幾個 tmux 分頁,如果每台機器的 prompt 長得不一樣, Context Switch 的成本變高,要重新適應,一天下來很耗神,統一成同一套之後,切過去腦袋不用重開機,這樣很棒。
所以這篇不是要教你把終端機弄漂亮。是要說服你:一個資訊密度高、降低摩擦力的工作環境,值得你花半小時設定一次,然後用好幾年。
2. Terminal101
如果你打開終端機,看到的還是一行乾巴巴的 bash-3.2$,那你在用系統預設。bash 也是 Linux 的預設 Shell,zsh 就是近幾年 MAC 的預設 Shell。
妳在網路上看很多人的 Command 前面就是
$的原因,就是因為那是bash 的預設符號,
2.1 什麼是 Shell?
Shell 是指提供一個使用者與電腦核心互動的介面,就像是我們跟電腦溝通的橋樑,很多都是透過 GUI(Graphical User Interface) 進行操作,但當我們對電腦進行更底層的操作,像是開發、資安、或者是系統管理時,就需要透過 Shell 來跟電腦溝通。
不然一天到晚移動滑鼠很累,一行可以解決的事,沒必要去點擊滑鼠。
現在妳每天 claude, codex, agy 都會無腦 Auto 模式,甚至是 Bypass Permission ,你真的知道妳放了什麼給 AI 嗎?
$python3 *
$bash *
$zsh *
2.1.1 Terminal vs iTerm2
Terminal 是 Mac 內建的基礎終端機,iTerm2 則是強大的第三方替代品。差別就像公務車與改裝跑車,iTerm2 支援視窗分割、全域熱鍵及豐富的顏色字體設定,非常值得使用的免費軟體。
2.2 zsh vs oh-my-zsh
先講清楚兩個角色,很多人一直搞混:
-
zsh 是一個 shell——就是負責解讀你指令的那個程式,可以想成 bash 的升級版。補全更聰明、路徑輸入更省事、可客製的空間大很多。從 macOS Catalina 開始,系統預設 shell 已經換成 zsh 了,所以你多半已經在用它,只是長得跟 bash 沒兩樣。
-
oh-my-zsh(簡稱 omz) 不是 shell,是架在 zsh 上的設定框架。它幫你把主題、外掛、常用別名這些東西打包好,你不用從零手刻設定。
換個比喻:zsh 是房子毛坯,oh-my-zsh 就是室內裝潢、家具、家電。你當然可以只打地鋪,但是裝上 omz 之後就回不去了。
裝 oh-my-zsh 一行就好(先確認你已經在用 zsh):
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
裝完它會自動幫你接管 ~/.zshrc。接下來所有的設定,都在這個檔案裡調。或是叫 AI 幫你裝好就好
~/.zshrc是一個隱藏檔案,在你的 home folder 裡,你可以用ls -a來查看,也可以用open ~/.zshrc來打開它,那是個設定檔,包括你每次打開終端機時,要先做什麼設定,都可以寫在這裡。而 oh-my-zsh 就是幫你寫好了一份預設的~/.zshrc。
3. 實作走查:我最愛的 .zshrc
3.1 載入 oh-my-zsh,選主題
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="agnoster"
ZSH_THEME 決定 prompt 長什麼樣。我用的是 agnoster——就是前面說的那個會顯示 git 分支、working tree 狀態、折疊路徑的主題。它是 oh-my-zsh 內建的,不用另外裝,設定名字填對就有。
前面講的那些「資訊密度」,九成是這一行 agnoster 給的。
當然 2026 年了,會有一些新主題,比如 powerlevel10k 或 starship?我自己接下來也想找時間試試 starship。
但我留在 agnoster 的理由跟潮不潮無關:就是懶。
而且它是 omz 內建的,零安裝、零額外依賴,我每開一台新 VPS,ZSH_THEME 填一個字就能讓它跟本機長得一模一樣。多台機器要統一 prompt,能無腦複製的設定就是讚,維護這種事越低越好。
3.2 Alias: 自己取的錯號,放在 source 之後
oh-my-zsh 載入完,下面才是你的個人擴充。這是我幾個真實的例子(路徑我留原樣,你換成自己的就好):
# 一鍵跳到專案目錄
alias cdcc='cd $HOME/A'
alias mw='cd $HOME/B'
# 一鍵開一個 tmux 開發環境(不存在就新建,存在就接回去)
alias mwdev='tmux new-session -As mwdev -c $HOME/A/.B/C "pnpm dev"'
別名的原則我只有一條:任何一個指令,只要我一週敲超過三次,就給它一個縮寫。 mwdev 那行是個好例子——它把「新開 tmux session、切到專案目錄、跑 dev server」三個動作縮成一個字。存在的話就接回原本那個,不會重複開。這種一鍵到位的東西,設定一次,往後每天都在還你時間。
比別名再進一步是函式。當一個動作需要判斷、需要參數,別名就不夠用了,得寫成函式。我有一個開 AI 工作 session 的 cc,邏輯是「這個 session 已經存在就接回去,不存在才新開」——這種帶條件的事,只有函式做得到,別名做不到。這裡不貼全文(太吃我的個人設定),只是讓你知道:別名處理固定動作,函式處理要判斷的動作。
3.3 顯示位置
agnoster 預設會在 prompt 開頭顯示 你的帳號@主機名。網路上的教學幾乎都會叫你加這行把它藏起來:
# 在自己帳號下,prompt 不再顯示 user@host,畫面更乾淨
DEFAULT_USER="$USER"
但我刻意沒設。
因為我一天在本機和好幾台 VPS 之間切來切去,prompt 開頭那段 user@host 就是我判斷「我現在到底在哪台機器」的儀表——看一眼就知道,不用敲 hostname 去問。少了它,我真的會搞不清楚這個視窗是誰。
但如果你多半只在自己一台機器上工作,這行對你就是雜訊,設了 DEFAULT_USER 之後本機乾淨、SSH 出去才顯示,很合理。
—> 同一行字,對不同工作型態,是資訊還是雜訊。這就回到第一節說的:美觀的標準從來不是極簡,是資訊密度。
3.4 字型的那個常見誤解
最後這點,是幾乎每個人第一次裝 agnoster 都會踩的坑。
agnoster 那些漂亮的箭頭和符號,是 Powerline 字型畫出來的。關鍵在於:這些字型是渲染在你本機的終端機程式裡,不是在 shell 裡。
所以:
- 你本機的終端機(iTerm2、Ghostty、Terminal.app)——字型裝在這裡
- 你 SSH 進去的 VPS——不用在 server 上裝任何字型,server 只負責吐字元,畫面是你這端畫的
- 如果 SSH 進 VPS 看到一堆亂碼方塊——問題百分之百在你本機的字型設定,別跑去 server 上瞎折騰
隨便挑一個 Powerline / Nerd Font 裝進你本機終端機,把它設成預設字型,方塊就消失了。
番外:沒有 root 權限的 VPS
有些 VPS 你沒有 root,改不了預設 shell(chsh 需要 root)。這種情況有個不用權限的解法——在 ~/.bashrc 的最尾端加一行:
command -v zsh >/dev/null && exec zsh -l
登入時 bash 照樣啟動,跑到最後這行就跳進 zsh。前面那段 command -v zsh 是防呆:萬一哪天你在一台沒裝 zsh 的機器上沿用同一份 .bashrc,這行會安靜跳過,不會把登入弄壞。效果跟改預設 shell 一樣,完全不需要 root。
整套講完,其實核心就三步:
- 確認在用 zsh,裝上 oh-my-zsh
ZSH_THEME設成agnoster- 本機終端機裝一個 Powerline 字型
剩下的別名、函式,是往後你自己一天天長出來的——哪個動作煩到你了,就給它一個縮寫。
最後說個有點好笑的。這套設定我用了好幾年,寫這篇文章查資料的時候,才發現 zsh 有個自動補全建議的外掛(zsh-autosuggestions,會用灰字提示你上次打過的指令),接下來想試試。用了這麼多年還在發現新東西——這大概就是「房間」的意思:不是佈置完一次就結束,是一直住著,一直微調。你的終端機會慢慢長成你工作的形狀。
到那時候,它就不只是好看了。它是你每天回去、順手、不用重新適應的那個地方。
那你的終端機,現在長什麼樣?