oh-my-zsh,最好用的 shell,沒有之一

鍾森龍發表於2019-08-18

命令列是程式設計師的最愛,預設的 bash shell 雖然功能已經很強大,但顯得太樸素了,也不夠智慧,遠遠談不上酷炫,雖然已經遠遠將 windows 的 cmd 甩開幾百條街。但對於極客來說,bash 還是太弱了,長得也難看。

zsh 的功能比bash強大很多,但配置過於複雜,起初只有極客才在用。後來,有個窮極無聊的程式設計師可能是實在看不下去廣大猿友一直只能使用單調的bash, 於是他建立了一個名為 oh-my-zsh 的開源專案...

自此,只需要簡單的安裝配置,小白程式設計師們都可以用上高檔大氣上檔次,狂拽炫酷吊炸天的 oh-my-zsh

安裝zsh

以centos7為例:(mac也是類似的操作)

檢視系統是否安裝了zsh,如果沒找到 /bin/zsh ,就需要先安裝

$ cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

centos7預設情況下沒安裝zsh

yum 安裝 zsh

$ sudo yum -y install zsh

安裝成功

$ cat /etc/shells | grep zsh
/bin/zsh

切換shell為zsh

$ chsh -s /bin/zsh
Changing shell for root.
Shell changed.

退出,重啟終端,可看到shell已切換成功

$ echo $SHELL 
/bin/zsh

安裝 oh my zsh

一行命令即可自動化安裝

$ wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

成功介面:

退出重新登入終端,即可看到oh-my-zsh已經生效

接下來只需簡單的配置,就可以享受 oh-my-zsh 的強大

主題選擇

oh-my-zsh有很多漂亮的主題:

主題列表 中選擇自己心宜的主題,安裝很簡單,開啟配置檔案 ~/.zhsrc ,將 ZSH_THEME 值改為你所選的主題名稱

如:

$ vim ~/.zshrc
# 修改主題名稱
ZSH_THEME="cloud"

然後重新載入配置檔案

$ source ~/.zshrc

每次修改配置檔案後,都需要再次載入配置檔案才能生效

外掛

oh-my-zsh預設安裝了git外掛,在git倉庫中,會提示當前所在的分支。此外,還有大量優秀的外掛,具體可檢視 外掛倉庫,以下只介紹幾個我常用的外掛

  • extract

linux下的壓縮檔案有多種格式,我總是忘記不同格式的解壓命令,如果有一個通用的指令可以解壓所有檔案就好了,extract 外掛就能解決此問題

現在不管是 zip, tar.bz2, gz 等格式的壓縮檔案,都只需要執行 extract 檔名 即可

  • z

z 外掛可以智慧在歷史的cd命令中智慧地選擇指令,如,我們在終端執行過cd /usr/local/nginx/conf/vhost,以後只需要執行z vhost即可,不必再去敲長串的命令了

以上兩個外掛都是oh-my-zsh自帶的,只需要在配置檔案的plugins配置中加入外掛名稱即可,多個外掛用空格隔開

  • zsh-autosuggestions

zsh-autosuggestions 屬於第三方外掛,可以提示我們插入歷史命令

如,我執行過 php artisan ide-helper:generate 指令,下次當我輸入 php 時,就會自動提示指令,並且會隨著我們的輸入而實時地匹配最符合的歷史指令,當所提示的指令符合我們的預期,只需要按右箭頭即可補全

安裝此外掛的流程

$ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

在配置檔案中中新增外掛名稱

綜上,配置檔案plugins的內容如下:

plugins=(
  git
  extract
  z
  zsh-autosuggestions
)

重新載入配置檔案,即可生效

可能遇到的問題

以下是可能遇到的小問題

與vim的提示相沖突的解決方案

使用自動補全外掛可能會與vim的提示功能相沖突,如會報以下錯誤:

$ vim t
_arguments:451: _vim_files: function definition file not found

解決方法:將~/.zcompdump*刪除即可

$ rm -rf ~/.zcompdump*
$ exec zsh

解決卡頓問題

有時候執行 cd 會卡,這讓人難以忍受。原因是 oh-my-zsh 在獲取 git 資訊,可以將 git 資訊隱藏:

git config --global oh-my-zsh.hide-status 1

小結

關於 oh-my-zsh 的功能,本文所涉及的僅是冰山一角,這些已經足夠我平時使用了,極大提高了效率,相信我,一旦用過這個尤物,你再也不能忍受單調枯燥的 bash

相關文章