歡迎您光臨本站 註冊首頁

使用 Zsh 的九個理由

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

 

像大部分 *nix 用戶,我之前用 bash 很多年,期間也有過小的不爽,但一直都忍過來,或者是說沒想過這些不爽的地方能解決,比如 cd 到一個深目錄時得哐哐猛敲 <TAB>。這麼多年裡我也嘗試過其他 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 的補全,所有待補全項都可以通過鍵盤方向鍵或者 <Ctrl-n/p/f/b> 來選擇。

 

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

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

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

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

其餘我常用的補全還有:

·ssh <TAB><TAB> 時 zsh 會自動列出你訪問過的主機和用戶名來補全 ssh 的參數。
·brew install <TAB><TAB> 來補全軟體包名,除了 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<TAB>

 

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

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

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

 

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

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

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

好文,頂一下
(10)
90.9%
文章真差,踩一下
(1)
9.1%
------分隔線----------------------------
  • 上一篇:我在學習編程中犯的兩個最大錯誤
  • 下一篇:跟極限編程創始人Kent Beck學編程
  • 我要評論!
  • 收藏
  • 挑錯
  • 推薦
  • 列印


把開源帶在你的身邊-精美linux小紀念品

[火星人 ] 使用 Zsh 的九個理由已經有396次圍觀

http://coctec.com/docs/program/show-post-71322.html