命令列上的互動模糊過濾工具介紹 - Linux

Lydia avatar
By Lydia
at 2017-03-20T23:37

Table of Contents

※ [本文轉錄自 Soft_Job 看板 #1OpuCUzP ]

作者: changyuheng (Henry) 看板: Soft_Job
標題: [心得] 命令列上的互動模糊過濾工具介紹
時間: Mon Mar 20 15:21:48 2017

下面這篇文章已經把介紹寫得很詳細了,我就不再贅述。推薦大家看看:

http://www.cnblogs.com/bamanzi/p/cli-narrowing-tools.html

發這篇文章主要的目的是針對 cd 的加速。

不知道大家會不會常常在 cd 路徑的時候,
只大概記得在哪裡或是記得在哪裡但是目錄很深懶得打全。

這個時候 fzf 就很好用:

https://github.com/junegunn/fzf#fuzzy-completion-for-bash-and-zsh

只要執行 cd **<TAB> 即可叫出互動式模糊搜尋介面,
找到目標之後按二次 <ENTER> 就可以進入該目錄。

但是它有一個缺點,就是它雖然已經很快又有快取,
而且還讓你用 ag 或 pt 把 find 換掉來讓它依 CPU thread 數平行遍歷目錄變得更快;
https://github.com/ggreer/the_silver_searcher
https://github.com/monochromegane/the_platinum_searcher
當搜尋的範圍中有 AOSP (Android 的 source code) 這種大咖時,還是慢;
就算不慢,資訊量也太大了。

於是乎,有人就想,如果能替曾經去過的目錄們建 MRU 表,
以後切目錄時如果確定有去過,從這張表搜尋就好,就會很快資訊量也不會太大。

這個功能有好幾個人做,目前最有名的是 z:

https://github.com/rupa/z

但是--總是要有點波折,不然就不用發這篇文了--,
z 雖然也有支援 tab completion,可是它只支援 substring filter,
而且不是互動的。

z 在超強的 fish 下使用倒是還好,因為 fish 的選單有互動搜尋介面,

https://github.com/fish-shell/fish-shell

不過這是當然的,因為它就是主打這個功能才會叫 friendly interactive shell 啊!

可是 fish 沒事幹嘛改 syntax 呢……
還有 process substitution ㄌㄟ?

所以大多數人還是繼續用 Bash 或 zsh。而且 zsh 有一個知名的髒 framework……
咳,知名的 framework 叫 oh-my-zsh,
把它裝下去之後就能讓你的 zsh 跟 fish 有 87% 像啊!

但是!就是這個但是讓我花了點時間!它的 tab completion 還是不能互動搜尋啊!
我知道有人想說 zaw 對不對?

https://github.com/zsh-users/zaw

可是 zaw 的選單不是 TAB completion 啊!

到目前為止,有 z 有 fzf,材料都齊了,就是沒人把它們兜在一起。
於是我犧牲了一點寶貴的週末把它們逗起來,下面是示意圖:

https://raw.githubusercontent.com/changyuheng/fz/master/fz-demo.gif

如果你覺得不錯,這個工具解決了你的問題,可以參考這個安裝說明安裝:

https://github.com/changyuheng/fz/blob/master/README-zh.md

然後,在 GitHub 專案頁面給個星吧!

--
有的人在讀書時就立下志向,有的人出社會後才找到志向,有的人經歷生死才體悟志向,
有的人遇到愛情才激起志向,有的人信仰宗教才啟發志向,有的人一輩子不知何為志向。
真正的人生是在擁有志向、找到真心想用生命去做的事時才正式開始。

         改編自谷阿莫 6 分鐘看完 2016 校園男女的電影《誰的青春不迷茫》

--
Tags: Linux

All Comments

Olivia avatar
By Olivia
at 2017-03-23T21:03
好像不錯
Annie avatar
By Annie
at 2017-03-25T10:26
厲害推
Genevieve avatar
By Genevieve
at 2017-03-26T02:09
Emily avatar
By Emily
at 2017-03-26T19:20
講 omz 髒就是要推
Vanessa avatar
By Vanessa
at 2017-03-30T03:11
想問omz髒的點?
Olivia avatar
By Olivia
at 2017-04-02T21:37
破壞套件的版控
Regina avatar
By Regina
at 2017-04-04T08:35
還是不懂OMZ的髒點

~/.mozilla/ 的意思

Ina avatar
By Ina
at 2017-03-19T19:12
小弟linux 新手 在查詢linux 安裝java plugin for firefox 看到一個指令 ~/.mozilla/ 想請問~/ 跟 and#34;.and#34; 的意思 - ...

伺服器的服務數量

Edward Lewis avatar
By Edward Lewis
at 2017-03-17T15:51
家裡有舊電腦,因為身邊裝置多,有有不同的系統 想說拿舊電腦架NAS,同時也想要做個Proxy(家裡自己用),再加入NTP pool 可能會加web server 這樣會不會在同一台主機上,做太多事情? 我不太清楚實務上會怎樣處理,單一主機就做單一件事? ----- Sent from JPTT on my ...

03/21 現代 IT 人一定要知道的 Ansible 自動化組態技巧

Rebecca avatar
By Rebecca
at 2017-03-16T17:58
題目: 現代 IT 人一定要知道的 Ansible 自動化組態技巧 by 凍仁翔 簡介: Ansible 是個與 Puppet, Salt, Chef 並列的 Infrastructure as Code 組態設定工具, 其簡單易用的特性更讓人愛不釋手,在 DevOps 界佔有一席之地。 本次凍仁將會帶領 ...

以dynamic module安裝nginx-rtmp @Ubuntu

Annie avatar
By Annie
at 2017-03-16T13:40
與 Apache 不同,Nginx 的模組 (module) 是以靜態連結的方式 直接編譯進 nginx 執行檔中,所以當新增或抽換模組時必須重新 編譯 Nginx, 非常不方便。幸好在 Nginx 1.9.11 加入了 dynamic modules 機制 [1],可以透過 shared object ...

使用 Gnome Wayland 時有辦法選擇 RGB 輸出範圍嗎?

Suhail Hany avatar
By Suhail Hany
at 2017-03-16T00:26
之前用 Xorg 可以使用 xrandr --output HDMI1 --set and#34;Broadcast RGBand#34; and#34;Fulland#34; 來達成目的,但是在 Wayland 下這方法是失效的,導致畫面總是有點灰灰的, intel 內顯 HDMI 的輸出貌似就是有這個 ...