命令行是程序員的最愛,默認的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="ys"
然後重新加載配置文件
$ source ~/.zshrc
每次修改配置文件後,都需要再次加載配置文件才能生效
插件
oh-my-zsh默認安裝了git插件,在git倉庫中,會提示當前所在的分支。此外,還有大量優秀的插件,具體可查看插件倉庫,以下只介紹幾個我常用的插件
- extract
linux下的壓縮文件有多種格式,我總是忘記不同格式的解壓命令,如果有一個通用的指令可以解壓所有文件就好了,extract插件就能解決此問題
現在不管是 zip, tar.bz2, gz
等格式的壓縮文件,都只需要執行 extract filename
即可
- 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
了