終端下工作最煩躁的就是路徑切換,沒有自動路徑切換的幫助,就像在泥裡走路,於是大家發明了各種 autojump / z / fasd 等工具來提公升路徑切換的效率,今天向大家介紹乙個更好用的工具:z.lua,用熟練了以後就像終端裡溜冰,路勁切換從此指哪打哪。
z.lua 是乙個會學習你使用習慣的cd
命令,它會跟蹤你在 shell 下訪問過的路徑,通過一套稱為 frecent 的機制(源自 mozilla),經過一段簡短的學習之後,z.lua
會幫你跳轉到所有匹配正則關鍵字的路徑裡 frecent 值最高的那條路徑去。
正則將按順序進行匹配,"z foo bar" 可以匹配到 /foo/bar ,但是不能匹配 /bar/foo。
將下面對應語句新增到你的.bashrc
/.zshrc
/.profile
或者對應 shell 的初始化指令碼末尾:
eval "$(lua /path/to/z.lua --init bash enhanced once echo)" # bash 初始化
eval "$(lua /path/to/z.lua --init zsh enhanced once echo)" # zsh 初始化
eval "$(lua /path/to/z.lua --init posix enhanced once echo)" # 其他 posix shell 初始化
source (lua /path/to/z.lua --init fish enhanced once echo | psub) # fish shell 初始化
iex ($(lua /path/to/z.lua --init powershell enhanced once echo) -join "`n") # power shell 初始化
然後重新登陸,即可使用。
「我喜歡它的原理,我在命令列下面的行為十分有規律,並且我十分懶惰,懶得管理和維護一套書籤或者路徑別名。「
「總之,z.lua 做到了它所宣稱的目標。如果你需要快速的在目錄間切換,它可能是最好的選擇。「
」我終於可以在自己的樹莓派1上使用 autojump 類似的功能了,而不用像以前傳統 autojump 那樣每次開啟終端都要等待 30 秒。」
cd 到乙個包含 foo 的目錄:
z foo
cd 到乙個以 foo 結尾的目錄:
z foo$
對長路徑使用多個關鍵字進行匹配:
假設路徑歷史資料庫(~/.zlua)中有兩條記錄:
10 /home/user/work/inbox
30 /home/user/mail/inbox
"z in" 將會跳轉到 /home/user/mail/inbox 因為它有更高的權重,同時你可以傳遞更多引數給 z.lua 來更加精確的指明,如 "z w in" 則會讓你跳到 /home/user/work/inbox。
使用 -i 引數進行跳轉時, 如果有多個匹配結果,那麼 z.lua 會給你顯示乙個列表:
$ z -i soft
3: 0.25 /home/data/software
2: 3.75 /home/skywind/tmp/comma/software
1: 21 /home/skywind/software
>
然後你按照最前面的序號輸入你想要去的地方,比如輸入 3 就會進入/home/data/software
。如果你不輸入任何東西直接按回車,那麼將會直接退出而不進行任何跳轉。
ps:互動選擇同時支援 "-i" 引數(大寫 i),讓你可以使用 fzf 在多項結果進行快速選擇(如果系統裡面安裝了的話)。
"-b" 選項可快速回到某一級父目錄,避免重複輸入 "cd ../../..",一般把 "z -b" 別名成 "zb" 命令:
使用舉例:
# 一直向上退到專案根目錄(就是裡面有乙個 .git 目錄的地方)
~/github/lorem/src/public$ zb
=> cd ~/github/lorem
# cd 到第乙個以 g 開頭的父目錄
~/github/vimium/src/public$ zb g
=> cd ~/github
# 快速回到 site 目錄
~/github/demo/src/org/main/site/utils/file/reader/whatever$ zb si
=> cd ~/github/demo/src/org/main/site
# 將 jekyll 替換為 ghost
~/github/jekyll/test$ zb jekyll ghost
=> cd ~/github/ghost/test
向後跳轉同樣也支援環境變數$_zl_echo
(用來顯示跳轉結果),這樣為搭配其他工具提供了可能性(並不需要改變當前工作目錄),比如ls $(zb)
:
bonus:「zb ..」 相當於 「cd ..」,「zb ...」 相當於 「cd ../..」,而 「zb ....」 相當於 「cd ../../..」 等等。 最後 「zb ..20」 等同於呼叫 「cd ..」 二十次。
alias zz='z -c' # 嚴格匹配當前路徑的子路徑
alias zi='z -i' # 使用互動式選擇模式
alias zf='z -i' # 使用 fzf 對多個結果進行選擇
alias zb='z -b' # 快速回到父目錄
z.lua 可以方便的匯入 z.sh 的資料(他們格式相同):
cat ~/.z >> ~/.zlua
還可以匯入 autojump 的資料:
fn="$home/.local/share/autojump/autojump.txt"
awk -f '\t' '' $fn >> ~/.zlua
命令列cd到 命令列裡打 cd 簡直是浪費生命
簡評 作為工程師,你在命令列下最常打的命令無非就是 cd 與 ls。這些年你浪費了多少時間?作為乙個程式設計師或者在 shell 中花費大量時間的人,你可能會經常以一種低效率的方式在目錄中來回移動,特別是每天經常訪問相同目錄。比如像這樣 當然你可能用的稍微熟練點了,用 tab 能省不少事,像這樣 不...
MATLAB的cd函式與cd命令
最初使用matlab的時候發現cd可以像linux的shell命令一樣使用,恰好cd又是我會的不多的幾個shell命令之一。於是,用得到的時候就各種cd,如果不成功就簡單修改摸索一下。那時候我確實是沒有看過help,更沒有去查比較詳細的help文件。不過,後來,我發現很多matlab中的命令是命令的...
別讓性格誤了你的職場好事
女人是感性的,男人是理性的。這話雖然有些絕對,但也不無道理。好像大多數的女人無論是在職場,還是在情場中,感性總是多於理性的。有時,就是因為女人的感性,所以獲得了與男人不一樣的靈感和收穫。然而,當女人不合時宜的表現出過分的感性時,亦會造成不可避免的損失。這時,是到了我們該好好管理一下自己性格的時候了。...