首頁 >科技週邊 >IT業界 >10個ZSH提示和技巧:配置,自定義和用法

10個ZSH提示和技巧:配置,自定義和用法

Jennifer Aniston
Jennifer Aniston原創
2025-02-09 12:32:08216瀏覽

10 Zsh Tips & Tricks: Configuration, Customization & Usage

本文將指導您安裝zsh,並提供十個技巧,助您提升zsh使用效率。

作為Web開發者,命令行在工作流程中日益重要。我們用它來安裝npm包、測試API端點、向GitHub推送提交等等。

我選擇的shell是zsh。 zsh是一個高度可定制的Unix shell,擁有強大的功能,例如強大的Tab鍵自動補全、智能歷史記錄、遠程文件擴展等等。

本指南適合所有用戶(即使是Windows用戶,感謝Windows Subsystem for Linux)。鑑於蘋果宣布zsh現在是macOS Catalina的標準shell,Mac用戶可能會發現它特別有用。

讓我們開始吧!

關鍵要點

  • 優先安裝Oh My Zsh:通過安裝Oh My Zsh(一個社區驅動的框架,通過數千個有用的插件和主題增強功能)來快速啟動您的zsh體驗。
  • 主題選擇很重要:從Oh My Zsh的眾多主題庫中選擇一個主題(例如默認的“robbyrussell”或流行的“avit”)來定制您的終端外觀,以獲得更好的視覺舒適度。
  • 優化歷史搜索:使用Oh My Zsh的歷史搜索功能,通過開始鍵入命令並使用向上箭頭循環瀏覽建議來輕鬆檢索和執行過去的命令。
  • 自動建議插件:使用自動建議插件來提高效率,該插件會根據您的歷史記錄在您鍵入時提出命令建議,從而加快命令行操作速度。
  • 導航快捷鍵:通過使用直接鍵入目錄名稱或使用“z”插件跳轉到常用和最近使用的目錄等快捷鍵來增強Oh My Zsh中的目錄導航。
  • Git集成和主題:利用Oh My Zsh的git插件執行快速Git命令,並選擇像Agnoster這樣的主題,以便立即直觀地了解您的git倉庫狀態。

安裝zsh

我不會為每個操作系統提供詳細的安裝說明,而是提供一些通用的指導原則。如果您在安裝zsh時遇到問題,網上有很多幫助信息。

撰寫本文時,當前zsh版本為5.7.1。

在macOS上安裝zsh

大多數版本的macOS都預裝了zsh。您可以使用命令zsh --version檢查是否如此,以及如果您安裝了哪個版本。如果版本為4.3.9或更高版本,則應該可以使用(稍後安裝Oh My Zsh至少需要此版本)。如果不是,您可以按照本指南使用Homebrew安裝較新版本的zsh。

安裝完成後,您可以使用chsh -s $(which zsh)將zsh設置為默認shell。發出此命令後,您需要註銷,然後重新登錄才能使更改生效。

如果您在任何時候決定不喜歡zsh,可以使用chsh -s $(which bash)恢復到Bash。

在Linux上安裝zsh

在基於Ubuntu的發行版上,您可以使用sudo apt-get install zsh安裝zsh。安裝完成後,您可以使用zsh --version檢查版本,然後使用chsh -s $(which zsh)將zsh設置為默認shell。您需要註銷,然後重新登錄才能使更改生效。

與macOS一樣,您可以使用chsh -s $(which bash)恢復到Bash。

如果您運行的是非基於Ubuntu的發行版,請查看其他發行版的說明。

在Windows上安裝zsh

不幸的是,事情開始變得有點複雜。 zsh是一個Unix shell,要在Windows上運行它,您需要激活Windows Subsystem for Linux (WSL),這是Windows 10和11中運行Linux二進製文件的一個環境。

網上有很多教程解釋如何在Windows 10中使用zsh。我發現以下兩個教程是最新的且易於遵循的:

  • 如何在Windows 10上安裝和使用Linux Bash Shell——首先按照此步驟安裝WSL
  • 如何在Windows 10中使用Zsh(或其他Shell)——其次按照此步驟安裝zsh

請注意,也可以使用Cygwin運行zsh。以下是執行此操作的說明。

第一次運行

第一次打開zsh時,您將看到以下菜單。

10 Zsh Tips & Tricks: Configuration, Customization & Usage

如果您選擇(1),您將進入一個菜單,允許您配置歷史記錄、鍵綁定以及許多其他內容。但是,我建議選擇(2),它將創建一個具有推薦默認設置的配置文件。

查找配置文件

現在讓我們看看zsh剛剛創建的文件。進入您的主目錄,然後在您選擇的編輯器中打開.zshrc文件。每當您啟動zsh時都會運行此文件,並且這是任何自定義配置所在的位置。

注意:在大多數操作系統上,以點開頭的文件名默認情況下是隱藏的,因此您需要使其可見才能編輯它。如果您不確定如何操作,請搜索“顯示隱藏的點文件mac/Linux等”。

我們可以通過創建別名來演示此文件的工作方式。在最簡單的形式中,別名是常規命令的終端快捷方式。將以下內容添加到.zshrc的底部並保存文件:

<code>alias myip="curl http://ipecho.net/plain; echo"</code>

重新啟動您的shell(例如,通過關閉它然後再次打開它),然後鍵入myip。如果您安裝了cURL程序,您應該會看到當前公共IP地址輸出到終端。如果您想更多地嘗試別名,請查看7個超級有用的別名,讓您的開發生活更輕鬆。

通過鍵入exit關閉終端,然後找到.zsh_history文件,該文件也位於您的主目錄中。這是zsh存儲您以前終端命令列表的地方。目前它應該包含兩行——myipexit

注意:在本教程中,我們將多次重新加載shell。您也可以使用命令執行此操作:source ~/.zshrc

檢查您的進度

此時,您應該已經安裝了zsh並將其設置為默認shell。如果您遇到任何問題,請嘗試在SitePoint論壇上創建一個主題並尋求幫助。

現在讓我們進入一些技巧。

  1. 安裝Oh My Zsh

如果您只遵循這些技巧中的一個,則必須是這個。

Oh My Zsh是一個社區驅動的框架,用於管理您的zsh配置,並附帶數千個有用的函數、助手、插件和主題。以下許多技巧都依賴於您已安裝此框架。

如項目主頁所述,您可以使用cURL或wget安裝它:

<code>alias myip="curl http://ipecho.net/plain; echo"</code>
<code>sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"</code>

這假設您已安裝Git,希望您已經安裝了。如果沒有,您可以從項目的首頁獲取它。

10 Zsh Tips & Tricks: Configuration, Customization & Usage

如您所見,從安裝後消息中,Oh My Zsh創建了.zshrc文件的備份,然後用它自己的版本替換了它。這意味著您需要將任何自定義配置(例如我們的myip別名)複製到新的.zshrc文件中。

  1. 選擇一個主題

如果您在終端上花費大量時間,那麼值得投入一些精力使其在視覺上更具吸引力。幸運的是,Oh My Zsh附帶了許多主題。

如果您在.zshrc文件中查找ZSH_THEME變量,您會發現它設置為robbyrussel。這是Oh My Zsh創建者使用的默認主題。

要安裝不同的主題,請從上面的鏈接中選擇一個,然後更改ZSH_THEME變量的值,然後再重新啟動shell。例如,設置ZSH_THEME="avit"將導致Oh My Zsh使用avit主題。

您可能還想更改終端的配色方案。在我的Linux機器上,我可以通過編輯 > 首選項 > 顏色來執行此操作。取消選中使用系統主題中的顏色,然後選擇Solarized dark作為方案,幾乎不需要時間就能獲得非常吸引人的結果。

10 Zsh Tips & Tricks: Configuration, Customization & Usage

請注意,該主題如何識別它位於Git倉庫中,告訴我我所在的哪個分支,並顯示一個綠色勾號讓我知道一切都是最新的。

我鼓勵您瀏覽可用的主題並找到一個適合您的主題。

故障排除

當我在WSL上測試它時,一旦我安裝了Oh My Zsh,我的終端中就會出現損壞的字符。為了解決這個問題,我必須安裝Powerline字體並告訴我的終端使用它們:

<code>alias myip="curl http://ipecho.net/plain; echo"</code>

然後打開管理員PowerShell,導航到倉庫的根目錄並運行:

<code>sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"</code>

如果PowerShell阻止您運行腳本,請嘗試按照此Stack Overflow答案設置ExecutionPolicy。字體安裝完成後,請務必將其設置回去。

最後,右鍵單擊終端的標題欄,選擇屬性 > 字體,並確保選擇了Powerline字體。在測試中,Deja Vu Sans Mono for Powerline 對我來說效果很好。

另請注意,一些主題需要Powerline字體,無論操作系統如何。我們將在文章的最後部分介紹如何安裝其中一個主題(Agnoster)。

  1. 使用歷史記錄

我最喜歡的Oh My Zsh功能之一是它允許您搜索歷史記錄的方式。假設.zsh_history的內容如下所示:

<code>sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"</code>

如果您在終端中按鍵,您會期望逐個循環遍歷這些歷史記錄條目,對吧?這並不奇怪。

但是,Oh My Zsh允許您輸入命令的開頭,然後按鍵循環遍歷匹配的條目。因此,在上面的示例中,如果您輸入“mkdir”然後按鍵,您將看到顯示“mkdir {src,build}”。如果您再次按下它,您將看到“mkdir my-project”。

我一直使用此功能。例如,當我想要ssh到服務器並且不記得確切的憑據時,我只是輸入“ssh”並可以循環遍歷最近的連接直到找到正確的連接。或者,當我記不起命令的確切語法時,我可以只輸入前幾個字符並循環遍歷任何匹配項。

  1. 自動建議

Oh My Zsh的另一個很棒的功能是插件。這些會為您的shell添加新功能並增強其功能。

Oh My Zsh附帶數百個適用於各種用途的插件,我們稍後將在本文中介紹其中一些。但是,在本節中,我想向您介紹一個名為autosuggestions的第三方插件。這會根據歷史記錄在您鍵入時建議命令。

要安裝,您需要將其存儲庫克隆到$ZSH_CUSTOM/plugins。默認情況下,這是~/.oh-my-zsh/custom/plugins

<code>git clone https://github.com/powerline/fonts.git</code>

完成後,要激活它,請進入.zshrc文件並取消以下行的註釋:

<code>.\install.ps1</code>

然後將git替換為zsh-autosuggestions

<code>cd Desktop
mkdir my-project
cd my-project
npm init -y
mkdir {src,build}
touch index.js</code>

重新啟動shell,您會注意到,當您鍵入命令時,Oh My Zsh會根據您的歷史記錄提出建議。如果建議是您正在尋找的建議,請按鍵接受它。真正的省時器!

10 Zsh Tips & Tricks: Configuration, Customization & Usage

  1. 使用Oh My Zsh進行文件導航

Oh My Zsh的另一個很棒之處在於它使在您的機器上導航變得多麼容易。

例如,當您想更改目錄時,沒有必要輸入cd命令;cd Desktop 只需輸入Desktop即可。這在路徑中也適用:您可以輸入/home/jim/Desktop並直接到達您想要去的地方。

Oh My Zsh也有很好的自動補全功能。一旦您開始鍵入路徑,您可以按TAB鍵讓它展開您可以導航到的所有可能文件夾的列表。如果您繼續按Tab鍵,您可以遍歷此列表,直到通過按Return鍵選擇一個文件夾。之後再次按TAB鍵將重新啟動此過程。

10 Zsh Tips & Tricks: Configuration, Customization & Usage

最後,值得一提的是,Oh My Zsh提供了一些用於處理和導航目錄的命令和別名。例如,鍵入...將使您向上移動兩個目錄,鍵入take <dir-name></dir-name>將創建一個新目錄並導航到該目錄。 Oh My Zsh還支持動態路徑補全,因此鍵入(例如)/h/j/De並按Tab鍵將路徑擴展到/home/jim/Desktop。很酷,對吧?

額外提示:如果您感覺懶惰,您可以將文件夾直接拖放到終端窗口上,路徑將為您展開。

  1. 使用z導航到任何內容

z是一個方便的插件,它會創建一個您最常用和最近使用的文件夾列表(它稱之為“frecent”),並允許您使用一個命令跳轉到它們。這通常比必須通過嵌套文件夾結構進行製表符切換更方便。

要安裝插件,您只需將其添加到.zshrc文件即可:

<code>alias myip="curl http://ipecho.net/plain; echo"</code>

然後重新啟動終端。

安裝後,z將有一個短暫的學習階段,因為它會觀察您使用終端在PC周圍導航。但是,一段時間後,您將能夠鍵入z後跟您所需目錄路徑中的任何單詞。該插件將使用模糊匹配來確定您要轉到的文件夾並相應地展開路徑。如果有多個可能性,您可以像在之前的提示中所述那樣遍歷選項。

這聽起來可能不是什麼大不了的事,但您將能夠打開一個shell,鍵入z my-project並將其路徑擴展到/home/jim/files/some/deeply/nested/directory/or/other/my-project。然後,當您位於該目錄中時,您可以鍵入z my-other-project並將其路徑擴展到/var/www/html/projects/top/secret/my-other.project

注意:我第一次運行z並嘗試更改目錄時,出現錯誤_z_dirs:2: no such file or directory: /home/jim/.z。這是一個一次性事件,因為z顯然需要在我的主目錄中創建一個.z文件。如果您遇到任何問題,本文提供了一些建議。

  1. 使用Git

zsh開箱即用地包含一些基本的Git集成。例如,如果您鍵入git並按Tab鍵,zsh將會有用地輸出大量可能的git命令列表。如果您鍵入git,然後鍵入您正在尋找的命令的前幾個字母,這將變得更有用。例如git a Tab產生:

<code>alias myip="curl http://ipecho.net/plain; echo"</code>

當您安裝Oh My Zsh git插件時,事情開始變得更有趣:

<code>sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"</code>

這提供了一整套別名,以及一些用於處理Git的有用函數。我經常使用的一些是:

  • gaagit add all
  • gdcagit diff --cached
  • gpgit push
  • gpf!git push --force
  • grhhgit reset --hard
  • gstgit status

您還可以一次創建多個命令的別名,方法是將以下內容添加到.zshrc文件中:

<code>sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"</code>

現在,當您在Git倉庫中時,鍵入acp "a commit message"將添加所有更改的文件,使用您指定的任何提交消息提交它們,然後將它們推送到您的遠程倉庫。此想法的功勞歸於Ali Spittel。

  1. 立即獲取git倉庫狀態反饋

在文章開頭,我們激活了一個名為avit的主題。在Git倉庫中,此主題將顯示分支名稱,以及一個十字或勾號,指示該分支是否為最新狀態。我喜歡能夠一目了然地看到這些信息,這絕對比一直鍵入git status要好得多。

但是,有一些主題以更直觀的方式顯示此信息。我最喜歡的是Agnoster。讓我們現在安裝它。

為了使Agnoster正確呈現箭頭和Git圖標,您可能需要安裝Powerline修補的字體。 WSL用戶可以通過按照上面故障排除部分中的說明進行操作。對於macOS和Linux用戶,可以在項目的repo中找到安裝說明。

High Sierra或更高版本上的Mac用戶可能需要執行一些額外的工作才能顯示這些字體。除非您使用的是Catalina,否則建議使用此方法。 Catalina用戶需要安裝修補的字體並在終端設置中選擇它。

要測試您的終端是否可以顯示所有必要的字符,請運行以下命令:

<code>git clone https://github.com/powerline/fonts.git</code>

結果應如下面的圖像所示。

10 Zsh Tips & Tricks: Configuration, Customization & Usage

之後,通過更改.zshrc文件中的以下行來啟用主題:

<code>alias myip="curl http://ipecho.net/plain; echo"</code>

然後重新啟動終端。一旦Agnoster啟動並運行,您將更直觀地了解任何Git倉庫的狀態。您還將收到關於先前命令是否成功或失敗以及您是否使用提升的權限進行工作的視覺反饋。

10 Zsh Tips & Tricks: Configuration, Customization & Usage

提示:如果您不喜歡提示符的user@host部分,您可以通過將DEFAULT_USER=your_user_name添加到.zshrc文件來使其消失。

  1. 插件,插件,插件

如前所述,Oh My Zsh附帶大量插件。您真的應該瀏覽這些插件,並投入一些時間學習那些可以幫助您提高工作效率的插件。為了幫助您入門,以下是一些需要注意的流行插件:

  • cloudapp – 將文件和管道內容上傳到Cloudapp服務。輸出並將生成的URL複製到剪貼板。
  • command-not-found:如果$PATH中未識別命令,這將使用Ubuntu的command-not-found包來查找它或建議拼寫錯誤(僅適用於Ubuntu和openSUSE)。
  • node:在瀏覽器中打開當前版本的Node API。
  • npm:為npm添加自動補全功能。
  • sudo:兩次按ESC鍵會在當前命令或命令行為空時的最後一個命令前面加上sudo
  • vscode:使命令行和代碼編輯器之間的交互更容易。
  1. 快捷鍵組合

這不是zsh特有的技巧,但為了總結,我想讓您了解這五個省時的快捷鍵組合。

  • Ctrl U:從光標到行首刪除。
  • Ctrl K:從光標到行尾刪除。
  • Ctrl W:從光標到前面單詞的開頭刪除。
  • Alt D:從光標到下一個單詞的結尾刪除。
  • Ctrl L:清除終端。

如果您能記住這些,您會驚訝於它們經常派上用場。

結論

在本文中,我已經演示瞭如何安裝zsh(Z shell)並將其設置為默認shell。我還展示瞭如何使用Oh My Zsh框架充分利用您的新終端。我希望,如果您嘗試使用這些方法幾週,您會想知道您以前是如何沒有它們工作的。

並且不要忘記:如果您對此有任何問題,您可以跳到SitePoint論壇並尋求幫助。我也很樂意聽到我是否遺漏了什麼——例如,您最喜歡的主題、插件、別名或生產力技巧。

您可以在論壇或Twitter上聯繫我。

(以下為原文FAQs部分的偽原創,保持原意不變,並精簡部分重複內容)

關於Zsh的常見問題

  • Zsh與Bash等其他shell有何不同? Zsh提供高級Tab鍵自動補全、拼寫檢查、可自定義提示符和更多腳本選項等功能。與Bash等傳統shell相比,它旨在提升用戶體驗和生產力。

  • 我可以在Windows上使用Zsh嗎? 可以,您可以通過Cygwin、Windows Subsystem for Linux (WSL)或Git Bash等工具在Windows上安裝Zsh。但是,在Windows上設置Zsh可能需要一些額外的步驟。

  • Zsh可以運行我現有的Bash腳本嗎? 可以,Zsh可以運行Bash腳本,但由於兩個shell之間的語法差異,可能會出現一些兼容性問題。最好驗證和調整腳本以確保它們在Zsh中正確運行。

  • 什麼是Zsh主題? Zsh主題決定終端提示符的外觀。它們通常顯示有用的信息,例如當前目錄、Git狀態等。 Oh My Zsh包含各種主題供您選擇。

  • 如何在Zsh中啟用語法高亮顯示? 您可以使用“zsh-syntax-highlighting”等Zsh插件啟用語法高亮顯示。安裝插件並將激活命令添加到您的Zsh配置文件中。

  • 如何自定義我的Zsh提示符? 您可以通過修改Zsh配置文件(通常為~/.zshrc)中的PS1環境變量來自定義Zsh提示符。或者,使用Oh My Zsh等框架可以輕鬆選擇和自定義主題。

  • 什麼是Zsh插件? Zsh插件是增強Zsh功能的擴展。它們可以提供額外的功能,例如語法高亮顯示、自動建議以及對特定命令或語言的改進補全。

  • 如何安裝Zsh插件? “Oh My Zsh”、“Zplug”和“Antigen”等Zsh插件管理器使安裝和管理插件變得容易。每個管理器都有其自己的設置說明,通常涉及修改Zsh配置文件。

  • 什麼是Oh My Zsh? Oh My Zsh是一個流行的框架,用於管理Zsh配置和插件。它包含您可以輕鬆啟用或自定義的預構建主題和插件集合。

  • 如何將Zsh設置為我的默認shell? 您可以通過運行命令chsh -s $(which zsh)將默認shell更改為Zsh。這將更新系統用戶配置中的shell首選項。

  • 如何安裝Zsh? macOS和許多Linux發行版通常預裝了Zsh。如果沒有,您可以使用系統的包管理器安裝它。例如,在基於Debian的系統上,您可以運行sudo apt-get install zsh

  • 什麼是Zsh(Z shell)? Zsh,即Z shell,是一個高級Unix shell,它為命令行界面提供強大的自定義選項、改進的腳本功能和交互式功能。

  • 如何配置和自定義Zsh? 配置和自定義Zsh涉及編輯.zshrc文件,選擇主題和插件(例如使用Oh My Zsh),設置選項、別名和自定義提示符(PS1)。 這需要根據個人喜好和需求進行調整。

以上是10個ZSH提示和技巧:配置,自定義和用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn