命令列是程式設計師的最愛,預設的 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
了