
1. 為什么是iTerm2換掉系統(tǒng)自帶終端之前先搞清楚它值不值得1.1 自帶終端真正讓人難受的地方在Mac上折騰終端這件事一旦開始就停不下來。我先說結(jié)論如果只是偶爾打開命令行跑一兩條命令系統(tǒng)自帶的“終端”確實夠用但如果你要天天跟服務(wù)器、腳本、日志、編譯任務(wù)打交道iTerm2值得你專門花半小時好好配置一次。很多人第一次打開iTerm2可能會問它和系統(tǒng)終端看起來不都是黑底白字嗎差別在哪差別主要在“用起來”而不是“看起來”。系統(tǒng)自帶終端最明顯的問題是窗口管理。開發(fā)的時候經(jīng)常需要同時看兩個目錄下的日志或者一邊編輯配置文件一邊觀察命令輸出。自帶終端雖然支持多標簽頁但標簽頁之間只能來回切換沒辦法像編輯器那樣在一個窗口里左右分屏。手動把兩個窗口并排擺也不是不行但每次換顯示器、換工作目錄都要重新調(diào)整位置時間一久就很煩。其次是配色和字體默認的白底黑字在光線暗的環(huán)境里非常刺眼想換主題需要手動去改配置改完也不一定好看。還有一個被很多人忽略的細節(jié)是粘貼安全問題。自帶終端會把剪貼板內(nèi)容原封不動丟進命令行萬一復(fù)制了一段帶換行的多行命令可能還沒反應(yīng)過來就回車執(zhí)行了。1.2 iTerm2 的核心優(yōu)勢分屏、熱鍵、粘貼保護一個不少iTerm2真正吸引人的地方不是花哨而是把終端里高頻的小操作都做到了順手級別。第一就是分屏iTerm2可以用快捷鍵把一個窗口切成左右或上下多個窗格窗格之間獨立滾動甚至支持同步輸入。這個功能在排查線上問題時特別實用一邊開一個窗格看服務(wù)日志一邊在另一個窗格敲命令鼠標都不用挪。第二是全局熱鍵窗口設(shè)置好之后在任何應(yīng)用里按一個組合鍵就能呼出終端輸完命令再按一下收起。這個體驗很像在IDE里按快捷鍵打開命令面板但終端窗口是全局的真正做到隨叫隨到。第三是粘貼保護當剪貼板內(nèi)容里包含換行符時iTerm2會先彈窗問你確認避免誤執(zhí)行多行命令。這個功能看著簡單實際能擋住不少事故。它還有即時回放、智能選中、狀態(tài)欄、配色預(yù)設(shè)、會話保存這些能力。如果你剛接觸命令行這套配置能直接降低前期的挫敗感如果你是老手分屏和熱鍵窗口能實打?qū)嵐?jié)省時間。下面我開始講怎么從零把iTerm2配置成一天離不開的效率入口。2. 安裝與基礎(chǔ)環(huán)境準備2.1 官網(wǎng)安裝和Homebrew安裝怎么選iTerm2的安裝方式很成熟兩條路都走得通。第一種是直接從官網(wǎng)下載zip壓縮包解壓后把iTerm2.app拖進“應(yīng)用程序”文件夾。首次打開時如果提示“無法驗證開發(fā)者”之類的信息不要慌這是macOS的Gatekeeper機制在檢查應(yīng)用來源不是軟件本身出了問題右鍵軟件圖標選擇“打開”即可繞過。第二種方式適合已經(jīng)裝了Homebrew的用戶在終端里執(zhí)行一條命令brew install --cask iterm2這種方式的好處是升級方便以后想更新命令行里跑一條命令就完成。兩種方式裝完之后按住Command鍵或直接用Spotlight搜索iTerm2就能打開。我個人的習慣是優(yōu)先用Homebrew管理因為后面配置Zsh、安裝字體也會依賴Homebrew統(tǒng)一用命令行管理比較省事。如果只是偶爾用終端官網(wǎng)下載反而更直觀沒有多余依賴。需要注意如果之前裝過舊版本iTerm2用新版本覆蓋安裝是可以的配置文件一般會保留。2.2 把iTerm2設(shè)置成默認終端裝好之后很多人做的第一件事是讓系統(tǒng)默認用iTerm2打開終端操作。打開iTerm2按Command,進入偏好設(shè)置在General - Startup這個頁面里找到“Default Terminal”相關(guān)的按鈕點擊“Make default terminal”。設(shè)置完成后在訪達里右鍵一個文件夾選擇“新建位于文件夾位置的終端窗口”或類似入口時打開的就是iTerm2而不是系統(tǒng)終端。macOS版本不同界面文字可能略有差異但核心按鈕不變。這里有一個小坑有些用戶找不到這個按鈕或者點了以后沒有反應(yīng)。遇到這種情況先重啟一次iTerm2再試。只要按鈕成功生效你在訪達里打開終端的操作就會統(tǒng)一走iTerm2文件管理和命令行之間的銜接會自然很多。這個步驟不是必須的但建議做一下尤其是你平時習慣用訪達瀏覽文件、在目錄里直接敲命令的場景。2.3 第一輪偏好設(shè)置窗口、滾動記錄和半透明裝好iTerm2后先不要急著找各種主題先把基礎(chǔ)偏好設(shè)置過一遍后面再折騰外觀會順手很多。打開Preferences - Appearance可以把Theme調(diào)成Dark或Minimal。Minimal會隱藏掉窗口的標題欄讓終端看起來更干凈我比較推薦。接著到Profiles - Window這里可以調(diào)整窗口的透明度、背景模糊和窗口風格。我習慣把透明度調(diào)到10%左右并開啟Blur這樣終端窗口和背景App疊加時依然能看清文字又不會顯得太死板。窗口風格選“No Title Bar”和熱鍵窗口配合起來尤其好看。在Profiles - Terminal頁面里建議把Scrollback lines調(diào)大。默認設(shè)置好的滾動行數(shù)可能只有1000行看長日志時很容易翻不到之前的輸出。可以直接開啟Unlimited scrollback或者至少調(diào)到10000行。另外在Profiles - Session里有一個“Dim inactive split panes”選項開啟后多個窗格并存時當前活躍窗格保持高亮其他窗格自動變暗。視覺上能一眼看出自己在操作哪個窗格多開的時候很好用。2.4 配色導(dǎo)入用最快的方式換上一套順眼主題iTerm2用.itermcolors文件來管理配色主題網(wǎng)上很多開源配色項目都提供現(xiàn)成文件。拿到文件后有兩種導(dǎo)入方式一種是直接雙擊.itermcolors文件系統(tǒng)會用iTerm2打開并導(dǎo)入另一種是在Preferences - Profiles - Colors頁面點擊Color Presets下拉菜單里的Import然后選中下載好的文件。導(dǎo)入之后還需要在同一下拉菜單里把剛剛導(dǎo)入的主題選一次它才會真正套用到當前Profile。這里有個非常常見的誤解很多人導(dǎo)入成功后終端顏色根本沒變化原因是當前使用的Profile不對或者Color Presets下拉菜單里選中的不是剛剛導(dǎo)入的主題。你需要先確認Preferences左側(cè)的Profiles列表里選中的是你的默認配置然后確認Colors頁面里的Color Presets已經(jīng)選中目標主題。配色方面我比較推薦Solarized Dark、Dracula和One Dark這類對比度不刺眼的主題。不過別指望顏色選完就萬事大吉后面換了Zsh主題后有些圖標和顏色會被覆蓋那是下一個步驟要處理的問題。3. 終端環(huán)境升級Zsh Oh My Zsh 的完整配置3.1 先確認當前shell是不是ZshmacOS近年來已經(jīng)把默認shell切換成了Zsh但很多從Linux遷移過來的用戶或者一直沒重新登錄的舊系統(tǒng)終端里可能還在用Bash。做配置之前先運行一條命令確認echo $SHELL如果輸出是/bin/zsh說明已經(jīng)是Zsh直接進入下一小節(jié)。如果輸出是/bin/bash說明還在用Bash需要手動切換。先確認Zsh已經(jīng)安裝macOS一般自帶如果沒有可以通過Homebrew安裝brew install zsh然后用chsh命令修改默認shellchsh -s /bin/zsh如果是通過Homebrew自定義安裝的Zsh路徑可能是/usr/local/bin/zsh或/opt/homebrew/bin/zsh以which zsh的輸出為準。切換后需要重啟終端或者重新登錄用戶身份。為什么一定要換成Zsh因為Zsh的補全體驗、主題和插件生態(tài)比Bash豐富太多尤其是配合Oh My Zsh之后很多在Bash里要手動實現(xiàn)的增強功能無限接近開箱即用。3.2 安裝Oh My Zsh管理配置的地基Oh My Zsh是一個管理Zsh配置的框架它把主題、插件、別名組織成一套約定俗成的結(jié)構(gòu)。官方提供了一句安裝命令在終端執(zhí)行sh -c $(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)這行命令會下載一個安裝腳本并執(zhí)行。執(zhí)行過程中腳本會提示你設(shè)置Zsh為默認shell如果之前已經(jīng)切好了這里一般不會再問。安裝完成后它會在家目錄下生成一個.zshrc文件以及一個隱藏的.oh-my-zsh目錄。以后所有終端配置基本都在.zshrc里改。打開.zshrc能看到ZSH_THEME和plugins這樣的配置項。剛開始建議只改主題和少量插件不要一上來就把網(wǎng)上的完整配置粘貼進去。這里要特別提醒如果不小心把.zshrc改壞了最簡單的恢復(fù)辦法是找到Oh My Zsh安裝時生成的備份文件通常是.zshrc.pre-oh-my-zsh。我剛開始折騰時養(yǎng)成了一個習慣每次改動.zshrc之前先復(fù)制一份到改名文件。這個習慣后來幫我從各種配置事故里快速脫身非常值得保留。3.3 主題選擇從默認主題到Powerlevel10kOh My Zsh默認主題叫robbyrussell綠色箭頭加目錄名簡潔但信息密度偏低。想體驗豐富一點的先把ZSH_THEME改成agnoster重啟終端后提示符會變成帶三角形箭頭的折線樣式很多技術(shù)截圖里就是這種效果。不過agnoster在中文環(huán)境下容易出現(xiàn)字符重疊或亂碼因為提示符里的特殊符號需要額外字體支持下一節(jié)會專門講。如果想要更強的視覺和功能直接用Powerlevel10k。這個主題的提示符支持顯示當前路徑、Git分支、上一條命令耗時、執(zhí)行狀態(tài)、電池狀態(tài)等而且渲染速度非??臁0惭b方式是通過Oh My Zsh的插件目錄手動克隆倉庫git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k然后編輯.zshrc把ZSH_THEME這一行改成ZSH_THEMEpowerlevel10k/powerlevel10k重新打開終端第一次運行時會進入配置向?qū)О刺崾具x擇字體風格、顏色方案、提示符樣式等。配置向?qū)ё詈髸梢粋€~/.p10k.zsh文件之后想微調(diào)直接改這個文件即可。Powerlevel10k還支持Instant Prompt模式開啟后終端啟動時先顯示基礎(chǔ)提示符其他內(nèi)容后臺加載體感上幾乎無等待。我用這個主題很長一段時間覺得它是命令行體驗里最有性價比的一次升級。3.4 高頻插件自動提示與語法高亮配完主題終端還缺兩個很關(guān)鍵的能力輸入命令時的歷史自動補全以及輸入內(nèi)容時實時反饋是否合法。這兩個能力分別對應(yīng)zsh-autosuggestions和zsh-syntax-highlighting。先安裝第一個git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions再安裝第二個git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting然后在.zshrc里找到plugins這一行改成plugins(git zsh-autosuggestions zsh-syntax-highlighting)保存后執(zhí)行source ~/.zshrc讓配置生效。生效后當你輸入命令時旁邊會出現(xiàn)灰色的歷史命令余下部分按方向鍵右鍵即可補全當你輸入一條不存在的命令時命令名會變成紅色正確的命令是綠色。這兩個插件用了就回不去。有一個順序細節(jié)很關(guān)鍵zsh-syntax-highlighting盡量放在plugins列表的最后一位否則高亮功能可能被其他插件覆蓋或者加載不正常。插件數(shù)量也不要堆太多每加一個都會拉長啟動時間。我實際用下來git、自動建議、語法高亮這三個再加上少量自定義別名已經(jīng)很夠用了。3.5 別名、PATH、歷史記錄這些細節(jié)配置文件里除了主題和插件真正日常使用頻率很高的是別名和PATH設(shè)置。我習慣在.zshrc的底部區(qū)域先規(guī)劃好別名alias llls -lah alias lals -Al alias zshconfigvim ~/.zshrc alias reloadsource ~/.zshrc alias clclearPATH設(shè)置尤其重要尤其是用Homebrew安裝軟件后需要讓Homebrew的bin目錄排在前面??梢栽?zshrc里加export PATH/opt/homebrew/bin:$PATHApple Silicon機器上Homebrew路徑通常是/opt/homebrew/binIntel機器是/usr/local/bin按實際情況填寫。這段要放在比較靠前的位置避免后面用which查找命令時路徑順序錯誤。再一個值得設(shè)置的是歷史記錄共享HISTFILE~/.zsh_history HISTSIZE5000 SAVEHIST5000 setopt share_history設(shè)置之后多個終端窗口的歷史命令是相互同步的在A窗口敲過的命令B窗口也能用方向鍵翻到。最后是語言環(huán)境。如果本地終端里中文顯示成亂碼可以在.zshrc加入export LANGzh_CN.UTF-8不過如果你經(jīng)常SSH到遠程英文環(huán)境的機器這個設(shè)定可能造成遠端locale不一致所以要看實際場景決定。4. 顏值與效率細節(jié)字體、快捷鍵、分屏、熱鍵窗口4.1 字體選不對所有主題都白搭很多人在安裝Powerlevel10k或agnoster之后發(fā)現(xiàn)提示符里的三角箭頭變成了方塊或問號這就是字體沒選對。普通終端字體沒有為Powerline符號專門設(shè)計字形所以那些特殊字符顯示不出來。解決辦法是安裝Nerd Fonts方案里的字體或者直接用Powerlevel10k自帶的推薦字體。我自己用下來比較順手的幾款是MesloLGS NF、FiraCode Nerd Font和JetBrainsMono Nerd Font。通過Homebrew安裝很省事brew install --cask font-meslo-lg-nerd-font brew install --cask font-firacode-nerd-font brew install --cask font-jetbrains-mono-nerd-font裝完字體后在iTerm2的Preferences - Profiles - Text里點擊Font區(qū)域的Change Font選擇新裝的Nerd Font。同時建議把“Use a different font for non-ASCII characters”也勾上并把非ASCII字體設(shè)置為同一款Nerd Font或者一個支持中文的字體。這樣Powerline符號能正常顯示中文也不容易出現(xiàn)渲染問題。字體大小我一般放在12號左右太小長時間看會累太大在分屏時又會浪費空間。如果設(shè)置完還亂碼多半是Profile沒選對或者終端會話沒有重啟。4.2 快捷鍵把分屏和切換做到肌肉記憶iTerm2默認快捷鍵的設(shè)計已經(jīng)比較合理但很多人不知道。最常用的分屏快捷鍵Command D是垂直分屏也就是左右分成兩個窗格Command Shift D是水平分屏上下分成兩個窗格。分屏之后用Command [ 或 Command ] 在窗格之間循環(huán)切換也可以用Command Option 方向鍵精確控制。打開新標簽頁是Command T在多個標簽頁之間切換用Command 數(shù)字鍵第一個Tab按1第二個按2。在終端輸出里搜索內(nèi)容用Command F支持正則海量日志時很有用。即時回放用Command Option B它能把終端內(nèi)容往回倒遇到輸出跑太快沒看清楚的場景能救急。這些快捷鍵如果和系統(tǒng)其他軟件沖突可以在Preferences - Keys - Key Bindings里自定義。我個人的經(jīng)驗是不要貪多先記住分屏和切換其他快捷鍵用到再查。剛上手時想一次性掌握全部快捷鍵反而容易手忙腳亂。4.3 熱鍵窗口全局呼出終端的利器熱鍵窗口是iTerm2不可替代的功能之一。它的表現(xiàn)是你在任何應(yīng)用界面按一個組合鍵iTerm2就能從屏幕邊緣彈出再按同一個鍵就收起像系統(tǒng)級插件一樣沒有窗口邊框。設(shè)置方法在Preferences - Keys - Hotkey點擊“Create a Hotkey Window”然后按下你想用的組合鍵。我在這臺Mac上選了Option Space。macOS的Spotlight默認是Command Space中文輸入法通常占用的是Control Space或Caps LockOption Space很少被其他軟件占用沖突概率低。啟用后熱鍵窗口會默認在屏幕頂部以橫幅樣式彈出。你可以繼續(xù)調(diào)整它的背景透明度、標簽欄是否顯示等讓它更輕盈。這個功能適合隨時執(zhí)行一條命令不需要切回桌面也不需要在多個窗口里翻找iTerm2。配合分屏之后基本可以替代大部分“切換窗口”的低效操作。如果你經(jīng)常遇到“突然需要跑個命令看看狀態(tài)”的場景熱鍵窗口是提升效率最直接的手段。4.4 狀態(tài)欄讓終端窗口自己“開口說話”iTerm2較新版本支持在窗口底部顯示一條狀態(tài)欄可以放CPU占用率、內(nèi)存占用、當前目錄、Git分支、最近命令耗時等信息。打開方式是Preferences - Profiles - Session找到Status bar相關(guān)選項勾選Show status bar然后點擊Configure Status Bar在彈出界面里添加組件右側(cè)實時預(yù)覽。我比較推薦的組件是Git branch和Current directory。多個分屏窗口同時工作時狀態(tài)欄能避免你忘記自己正在哪個分支、哪個目錄。如果覺得狀態(tài)欄占地方可以勾選Auto hide status bar終端空閑時自動隱藏只在觸發(fā)操作時顯示。狀態(tài)欄頂部還可以放Activity indicator有后臺任務(wù)運行時會顯示提示跑長時間編譯任務(wù)時很好用。狀態(tài)欄的配置很個人化不一定全都要。我自己默認只開當前目錄、Git分支和CPU占用其他信息需要看時再手動加。配置完之后每個終端窗口的信息可讀性會高出一大截。5. 配置同步與遷移換新Mac時不用從頭再來5.1 用iTerm2的動態(tài)配置保存功能折騰完iTerm2它會變成一個很順手的工具。但還有一個現(xiàn)實問題擺在面前如果換了一臺新Mac或者系統(tǒng)重置能不能快速恢復(fù)iTerm2提供了一個非常方便的動態(tài)配置保存選項。在Preferences - General - Preferences頁面里可以看到“Load preferences from a custom folder or URL”。你可以指定一個本地文件夾存放配置比如~/dotfiles/iterm2并勾選Save settings讓它自動保存。以后任何偏好設(shè)置的修改都會被程序自動導(dǎo)出到指定目錄的plist文件里。換新機器時只要在iTerm2里把路徑指到同一個文件夾就能加載同一套配置。如果你用了同步網(wǎng)盤多臺Mac之間甚至可以實時同步。不過同步前要想清楚網(wǎng)盤在多臺設(shè)備間同時打開時可能會把舊的配置文件同步覆蓋最好在做大幅度調(diào)整之前先關(guān)閉自動同步。iTerm2還有一個手動導(dǎo)出入口在General - Preferences頁面里可以執(zhí)行Save All Settings或者Copy plist to custom folder總之把配置落盤成文件再遷移是最穩(wěn)的。5.2 Dotfiles管理把Zsh配置文件納入版本管理iTerm2自己管理的配置解決外觀和窗口行為Zsh相關(guān)的配置則要單獨處理。我的做法是把~/.zshrc、~/.p10k.zsh這類文件放進一個dotfiles目錄然后用符號鏈接把家目錄里的配置入口指向版本管理目錄。例如mkdir -p ~/dotfiles mv ~/.zshrc ~/dotfiles/.zshrc ln -s ~/dotfiles/.zshrc ~/.zshrc接下來就可以用Git之類的工具管理這個目錄。以后改動配置記錄到dotfiles倉庫里每次到新機器上只需要克隆倉庫、重新建好符號鏈接、再安裝一遍Oh My Zsh和插件配置就回來了。有人可能會問直接拷貝.zshrc行不行當然也可以但符號鏈接的好處是你修改的真正文件在dotfiles目錄里不容易漏備份。如果你不想用Git也要定期把.zshrc備份到云盤或移動硬盤。我見過太多人配置了半年結(jié)果電腦出問題后全部從頭再來這種痛苦經(jīng)歷過一次就會理解備份的價值。5.3 寫一個可重復(fù)執(zhí)行的配置腳本思路如果每次裝完系統(tǒng)都要手動跑一堆安裝命令其實效率并不高??梢园亚懊嫠邪惭b步驟壓縮進一個腳本新機器上執(zhí)行一次就完成大半。腳本的核心思路是先裝Homebrew再用brew安裝iTerm2和字體接著安裝Oh My Zsh然后克隆Powerlevel10k和幾個插件最后用符號鏈接把配置指到正確位置。下面給一個示意結(jié)構(gòu)#!/bin/bash # 一鍵配置終端環(huán)境示意 export ZSH_CUSTOM${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom} brew install --cask iterm2 brew install --cask font-meslo-lg-nerd-font sh -c $(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh) git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting ln -sf ~/dotfiles/.zshrc ~/.zshrc腳本里沒有設(shè)置主題和插件列表因為那部分依賴你實際的.zshrc內(nèi)容真實使用時會加條件判斷。這里想表達的是配置過程不能只停留在“改好就行了”把它變成可重復(fù)執(zhí)行的資產(chǎn)才是折騰終端的最終目的。執(zhí)行完腳本后新機器上第一次打開終端可能還會要求運行p10k configure這很正常因為主題配置向?qū)枰藱C交互。把這套流程走完換機成本基本控制在半小時以內(nèi)。6. 常見問題與排查技巧實錄6.1 導(dǎo)入配色后界面沒有變化這個問題絕大多數(shù)情況下是因為當前使用的Profile不對。iTerm2允許你建立多個Profile每個Profile可以擁有獨立的字體、配色、快捷鍵布局。如果你在Profiles列表里選中了A Profile卻在B Profile的Colors頁面導(dǎo)入了主題界面上當然不會變。遇到這種情況先確認當前正在使用的Profile是哪一個然后到Colors的Color Presets里重新選擇主題。還有一個細節(jié)容易被忽略有些主題導(dǎo)入后需要調(diào)節(jié)Terminal里的Minimum contrast參數(shù)。它控制文字與背景的最小對比度如果覺得文字蒙了一層灰可以適當調(diào)高這個值。如果調(diào)色后整體顏色和預(yù)期差太遠不妨換一個主題試試不同主題在不同Profile上的表現(xiàn)會有細微差異。6.2 安裝Powerlevel10k后圖標還是方框排在第一位的仍然是字體問題。確認iTerm2當前Profile的Font區(qū)域確實選擇了Nerd Font并且“Use a different font for non-ASCII characters”里也選了一款合適的字體。因為Powerlevel10k提示符里的分支圖標、時鐘圖標都屬于特殊字符普通英文字體沒有包含這些字形。安裝多個Nerd Font后注意別讓系統(tǒng)默認字體接管特殊字符最好在iTerm2設(shè)置里統(tǒng)一把非ASCII字體也指定為Nerd Font。如果字體設(shè)置沒問題就在終端運行p10k configure重新走一遍配置向?qū)鼤茨氵x擇的字體重新生成合適的圖標類型。做完這一步大部分亂碼問題能解決。如果字體和向?qū)Ф荚囘^還是方框可以考慮重啟一次iTerm2因為某些字體資源需要在App重啟后才完全載入。6.3 執(zhí)行source ~/.zshrc時報command not found這個提示說明.zshrc里引用了某個沒有安裝或路徑不對的命令最常見的原因是插件問題。檢查plugins這一行里的插件目錄名是否與克隆時的目錄名一致比如zsh-autosuggestions目錄名不能寫錯。另一個常見錯誤是先把插件加入了plugins列表但還沒有執(zhí)行g(shù)it clone導(dǎo)致Oh My Zsh找不到對應(yīng)目錄。還有可能是自己加的alias或函數(shù)名和系統(tǒng)命令重名干擾了正常命令解析。排查思路是先把.zshrc里最近新增的內(nèi)容注釋掉然后分段執(zhí)行source看具體是哪一段報錯。不要小看這個問題.zshrc加載出錯后不會立刻影響當前終端但新開窗口時提示符會變得很難看甚至長時間卡住不加載完整環(huán)境。6.4 終端啟動變慢怎么辦插件數(shù)量越多Zsh啟動越慢這是不可避免的。想量化啟動耗時運行time zsh -i -c exit這行命令會輸出Zsh以交互模式啟動并退出的總耗時。如果接近1秒甚至更久就要考慮精簡。先看plugins里有沒有裝了但實際不用的插件比如z、history-substring-search這些能裁就裁。其次看主題Powerlevel10k本身渲染很快反而是某些老主題因為要執(zhí)行外部程序會拖慢啟動。Powerlevel10k的Instant Prompt功能記得開啟它能讓終端先出現(xiàn)基礎(chǔ)提示符其余后臺加載延后體感會明顯變快。如果用了iTerm2的狀態(tài)欄狀態(tài)欄本身不會顯著影響啟動但狀態(tài)欄上的組件如果自動刷新太頻繁也可能造成一段時間的高CPU占用。6.5 iTerm2窗口偶發(fā)卡頓和渲染問題較新的硬件上如果感覺iTerm2滾動不流暢可以檢查渲染引擎。在Preferences - Appearance - General里找到渲染引擎選項優(yōu)先選擇Metal作為Preferred rendering engine。Metal渲染在滾動和大量文本輸出的場景下流暢度優(yōu)勢很明顯。窗口透明度和模糊效果開得太高也會帶來額外性能開銷全屏運行且需要跟服務(wù)器長交互時建議適當降低特效。還有一個偶發(fā)問題是字體渲染模糊外接普通分辨率的顯示器時比較常見。這種多半和縮放設(shè)置有關(guān)而不是終端軟件本身。試著把字體大小調(diào)到整數(shù)像素例如12號或13號會比11.5這種半整數(shù)看起來邊緣更清晰。6.6 中文字符顯示與locale問題中文亂碼要分兩種情況看本地終端亂碼還是SSH到遠程服務(wù)器后亂碼。本地亂碼優(yōu)先檢查字體確認非ASCII字體選的是支持中文的字體比如PingFang SC。其次是環(huán)境變量在.zshrc里加export LANGzh_CN.UTF-8讓終端進程使用UTF-8編碼。如果遠程SSH也亂問題多半在遠程服務(wù)器的locale設(shè)置本地加LANG不一定有用需要在遠程機器上調(diào)整對應(yīng)配置。我建議不要在.zshrc里強行寫入單一語言環(huán)境。因為同一份配置可能在本地和遠程都會加載反而可能引發(fā)不一致。更穩(wěn)妥的做法是只在本地配置好遠程的locale交給對應(yīng)服務(wù)器的管理流程去處理。6.7 多行粘貼提示這個功能千萬別關(guān)寫到最后想提醒一個很多人忽略的安全細節(jié)。iTerm2默認在檢測到剪貼板內(nèi)容包含換行符時會彈出一個提示詢問你是要原樣粘貼還是轉(zhuǎn)義后粘貼。這個功能默認開著但有些教程為了讓自動化腳本粘貼方便會引導(dǎo)大家把“Ask for confirmation when pasting multi-line text”這個選項關(guān)掉。如果你的工作流里有大量手工粘貼腳本關(guān)掉確實順滑但同時也會失去一道保護屏障。我個人建議保留它終端里誤粘貼帶來的損失比多按一次回車要大得多。如果覺得每次都被攔截很煩可以只在偏腳本化的專用Profile里關(guān)閉日常使用的默認Profile繼續(xù)開著這個小取舍長期看是值得的。最后再分享一個我的實操習慣配置完成之后把~/.zshrc、~/.p10k.zsh和iTerm2導(dǎo)出的配置文件統(tǒng)一放進同一個備份目錄每次調(diào)整前復(fù)制一份。遇到解釋不了的奇怪問題對比備份能幫你快速定位我在實際使用中就靠著這個習慣省下過不少時間。如果你也想把終端收拾得舒服一點這套流程值得完整跑一遍。