<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          z.lua具備學習功能的 cd 命令

          聯(lián)合創(chuàng)作 · 2023-09-29 07:42

          z.lua 是一個會學習你使用習慣的 cd 命令,它會跟蹤你在 shell 下訪問過的路徑,通過一套稱為 Frecent 的機制(源自 Mozilla),經(jīng)過一段簡短的學習之后,z.lua 會幫你跳轉到所有匹配正則關鍵字的路徑里 Frecent 值最高的那條路徑去。

          正則將按順序進行匹配,"z foo bar" 可以匹配到 /foo/bar ,但是不能匹配 /bar/foo。

          特性說明:

          • 性能比 z.sh 快三倍,比 fasd / autojump 快十倍以上。

          • 支持 Posix Shell:bash, zsh, dash, sh, ash, busybox 等等。

          • 支持 Fish Shell,Power Shell 和 Windows cmd。

          • 使用增強匹配算法,更準確的帶你去到你想去的地方。

          • 低占用,能夠僅在當前路徑改變時才更新數(shù)據(jù)庫(將 $_ZL_ADD_ONCE 設成 1)。

          • 交互選擇模式,如果有多個匹配結果的話,跳轉前允許你進行選擇。

          • 交互選擇模式,支持使用 fzf 進行可視化結果篩選(可選)。

          • 快速跳轉到父目錄,或者項目根目錄,代替反復 "cd ../../.." 。

          • 兼容 lua 5.1, 5.2 和 5.3 以上版本。

          • 自包含且無額外依賴,單個 z.lua 文件完成所有工作。

          軟件安裝:

          將下面對應語句添加到你的 .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 初始化

          然后重新登陸,即可使用,bash 下還支持 fzf 補全,在 --init 參數(shù)列表最后加個 "fzf" 即可使用。

          用戶評價:

          "我喜歡它的原理,我在命令行下面的行為十分有規(guī)律,并且我十分懶惰,懶得管理和維護一套書簽或者路徑別名。"

          "總之,z.lua 做到了它所宣稱的目標。如果你需要快速的在目錄間切換,它可能是最好的選擇。"

          "我終于可以在自己的樹莓派1上使用 autojump 類似的功能了,而不用像以前傳統(tǒng) autojump 那樣每次打開終端都要等待 30 秒。"

          基本使用:

          cd 到一個包含 foo 的目錄:

          z foo

          cd 到一個以 foo 結尾的目錄:

          z foo$

          對長路徑使用多個關鍵字進行匹配:

          假設路徑歷史數(shù)據(jù)庫(~/.zlua)中有兩條記錄:

                10   /home/user/work/inbox
                30   /home/user/mail/inbox

          "z in" 將會跳轉到 /home/user/mail/inbox 因為它有更高的權重,同時你可以傳遞更多參數(shù)給 z.lua 來更加精確的指明,如 "z w in" 則會讓你跳到 /home/user/work/inbox。

          交互選擇:

          使用 -i 參數(shù)進行跳轉時, 如果有多個匹配結果,那么 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" 參數(shù)(大寫 i),讓你可以使用 fzf 在多項結果進行快速選擇(如果系統(tǒng)里面安裝了的話)。

          快速回到父目錄:

          "-b" 選項可以快速回到某一級父目錄,避免重復的輸入 "cd ../../..",一般把 "z -b" 別名成 "zb" 命令:

          • (沒有參數(shù)):cd 到項目根目錄,尋找父目錄中包含 (.git/.svn/.hg) 的地方,并且跳轉過去。

          • (單個參數(shù)):cd 到最近一級包含關鍵字父目錄中。

          • (兩個參數(shù)):對當前目錄進行字符串替換,然后 cd 過去。

          使用舉例:

          # 一直向上退到項目根目錄(就是里面有一個 .git 目錄的地方)
          ~/github/lorem/src/public$ zb
            => cd ~/github/lorem
          
          # cd 到第一個以 g 開頭的父目錄
          ~/github/vimium/src/public$ zb g
            => cd ~/github
          
          # 將 jekyll 替換為 ghost
          ~/github/jekyll/test$ zb jekyll ghost
            => cd ~/github/ghost/test

          向后跳轉同樣也支持環(huán)境變量 $_ZL_ECHO(用來顯示跳轉結果),這樣為搭配其他工具提供了可能性(并不需要改變當前工作目錄):

          # 假設我們位于 ~/github/vim/src/libvterm
          # 打開 $_ZL_ECHO 用于在每次跳轉后調用一次 pwd 顯示當前目錄
          $ _ZL_ECHO=1
          
          # 看看我項目根目錄(有 .git 那個)目錄里有什么?
          $ ls -l `zb`
            => ls -l ~/github/vim
          
          # 檢查 "<項目根目錄>/logs" 下面的日志
          $ tail -f `zb`/logs/error.log
            => tail -f ~/github/vim/logs/error.log
          
          # 查看一下某一級父目錄里有些啥
          $ ls -l `zb git`
            => ls -l ~/github

          Bonus:"zb .." 相當于 "cd ..","zb ..." 相當于 "cd ../..",而 "zb ...." 相當于 "cd ../../.." 等等。 最后 "zb ..20"; 等同于調用 "cd .." 二十次。

          常用技巧:

          推薦一些常用別名,放在你的配置文件中:

          alias zc='z -c'      # 嚴格匹配當前路徑的子路徑
          alias zz='z -i'      # 使用交互式選擇模式
          alias zf='z -I'      # 使用 fzf 對多個結果進行選擇
          alias zb='z -b'      # 快速回到父目錄

          z.lua 可以方便的導入 z.sh 的數(shù)據(jù)(他們格式相同):

          cat ~/.z >> ~/.zlua

          還可以導入 autojump 的數(shù)據(jù):

          FN="$HOME/.local/share/autojump/autojump.txt"
          awk -F '\t' '{print $2 "|" $1 "|" 0}' $FN >> ~/.zlua

           

          更多內容,參考項目文檔:

          https://github.com/skywind3000/z.lua

          瀏覽 14
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大鸡巴插逼 | 777.av| 美女啪啪啪网站 | A片视频免费 | 午夜一级805o |