使用 Zsh 的九個理由

像大部分 *nix 用戶,我之前用 bash 很多年,期間也有過小的不爽,但一直都忍過來,或者是說沒想過這些不爽的地方能解決,比如 cd 到一個深目錄時得哐哐猛敲 。這麼多年裏我也嘗試過其他 shell。比如 ksh/tcsh 以及今天要說的 zsh,但最終都沒堅持下去,因爲心中始終還是認爲 bash 是最正統的 shell,不願意去主動深入學習其他 shell。直到前幾天逛 GitHub,發現 排名第 6 的開源項目 oh-my-zsh,下來試用了一把,頓時覺得 bash 各種操作不爽到無法忍受。

放棄 bash 的各種內牛滿面的理由

這裏有個 youtube 上的視頻,短短 4 分鐘就已經拋出了幾十個讓 bash 用戶切換到 zsh 中的理由。視頻鏈接

 

理由 0:zsh 兼容 bash

兼容 bash 意味着我不需要太多學習成本就可以切換過來,意味着我以前在 bash 下積累的 shell 語法、基本操作都不會荒廢。在我心裏 bash 還是最通用和標準的 shell 環境,因此兼容 bash 讓我切換到 zsh 時沒有太多後顧之憂。

 

理由 1:zsh 的補全模式更方便

zsh 中按兩下 tab 鍵可以觸發 zsh 的補全,所有待補全項都可以通過鍵盤方向鍵或者  來選擇。

nine reasons to use zsh

 

理由 2:zsh 支持命令選項補全

zsh 除了支持目錄的補全,還支持命令選項的補全,例如 ls - 會直接列出所有 ls 的參數,再也不會出現一個命令打到一半,忘記參數導致重開一個 terminal man 一把。

nine reasons to use zsh

 

 

理由 3:zsh 支持命令參數補全

以前想 kill 掉一個進程,我的做法是 ps aux | grep "進程名" 然後記下 id,再 kill id。在 zsh 下,只需要 kill 進程名zsh 就會自動補全進程的 pid。

nine reasons to use zsh

其餘我常用的補全還有:

·ssh  時 zsh 會自動列出你訪問過的主機和用戶名來補全 ssh 的參數。
·brew install  來補全軟件包名,除了 homebrew 以外,同樣支持 port/apt-get 等其他包管理器。

 

理由 4:zsh 支持更加聰明的目錄補全

以前比如想進入一個比較深的目錄,比如 /Users/pw/workspace/project/src/main/webapps/static/js,就得在 bash 下面打半天,不停的 tab 去補全一個正確的路徑出來。在 zsh 下,只需要輸入每個路徑的頭字母然後 tab 一下: cd /u/p/w/p/s/m/w/s/j

 

理由 5:zsh 強大的快速目錄切換

以前最苦逼的事情莫過於頻繁在兩個工作目錄下切換,總要打一長串 cd 路徑。也嘗試過 popd 和 pushd 來解決這個問題,但往往是目錄已經切換了纔想起來沒用 pushd。而 zsh 會記住你每一次切換的路徑,然後通過 1 來切換到你上一次訪問的路徑,2 切換到上上次……一直到 9,還可以通過 d 查看目錄訪問歷史。

zsh 還可以配合 autojump 一起使用,autojump 會記錄下每一個你訪問過的目錄,然後通過 j 來快速跳轉。

 

理由 6:zsh 支持全局 alias 和後綴名 alias

bash 的 alias 只能做命令的縮寫,而 zsh 更進一步,使 alias 可以縮寫命令的一部分,例如參數或環境變量設置。

·········10········20········30········40········50········60········
1.$ alias -s log=less
2.$ ~/package/tomcat/log/catalina.log # 相當於 less ~/package/tomcat/log/catalina.log
3.$ alias -g PR=http_proxy=127.0.0.1:8087
4.$ PR curl https://twitter.com # 相當於 http_proxy=127.0.0.1:8087 curl https://twitter.com
 

理由 7:zsh 有着豐富多彩的命令行提示符

bash 下通過設置 $PS1 已經可以實現很豐富的提示符了,而 zsh 更進一步,可以實現諸如多行提示符、提示符右對齊等功能。oh-my-zsh 配置文件中提供了非常豐富的提示符 theme 供選擇,我使用的是 gentoo 主題,比較簡潔,還可以顯示當前 git 倉庫的狀態。

 

理由 8:zsh 有更多優雅的語法

例如修改 PATH,bash 下設置 $PATH 要求所有路徑都要寫在一行裏,目錄多了以後看起來就很難看。zsh 支持更加符合程序員審美觀的設置方式。

·········10········20········30········40········50········60········
1.path=(
2.    ~/bin
3.    $path
4.    ~/package/smartsprites/bin
5.)

 

安裝 zsh

Linux 用戶通過各自發行版的包管理器直接安裝即可。

Mac 自帶一個 4.x.x 版本的 zsh,可以直接使用,也可以通過 homebrew 安裝最近剛剛發佈的 5.0.0 版本。推薦使用最新的 5.0 版本,對多字節字符提供了完整的支持,這一點對於國內用戶來說很重要。詳細的 release note

 

設置爲默認 shell

通過命令 chsh 修改默認登錄 shell,需要注意的是,如果通過 homebrew 安裝了最新版本的 zsh,則需要 sudo 編輯 /etc/shells 加入一行 /usr/local/bin/zsh。然後再通過 chsh 來修改默認 shell,否則會提示 /usr/local/bin/zsh 不是合法的 shell。

 

安裝 oh-my-zsh 配置

對於每一個像我這樣的 zsh 初級用戶來說,oh-my-zsh 就是救人於水火中的大殺器,強烈建議使用此配置上手 zsh。

作者提供了傻瓜安裝命令:

·········10········20········30········40········50········60········

也可以手工安裝,具體步驟

 

幾個必備的插件

autojump

幫助快速目錄跳轉的小工具。首先要安裝 autojump,然後在 .zshrc 中開啓 autojump 插件。它會記錄下來每個你進入過的目錄,隨後通過 j 目錄名稱的一部分就可快速跳轉到該目錄。 Youtube 視頻介紹

git

Git 命令補全,除了可以補全 git 的子命令、命令開關等常規補全項以外,還可以補全分支名等內容,用 git 必開的插件。

osx

提供一些與 Mac OSX 系統交互的命令,比如:

● man-preview 通過 preview 程序查看一個命令的手冊,例如 man-preview git

● quick-look 快速預覽文件

● pfd 返回當前 finder 打開的文件夾的路徑

● cdf 切換到當前 finder 所在的目錄

原文:perfectworks 

via http://blog.jobbole.com/28829/

 

http://linux.cn/article-1308-1-qqmail.html

發佈了129 篇原創文章 · 獲贊 14 · 訪問量 59萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章