UNITE ALL SOURCES

為了寫這篇,還特地試了一下 Command-T 這個搜尋工具,它找的 source 是「檔案」。

Command-T 快速找到檔案,輸入框在圖片下方

Command-T

而我慣用的 FuzzyFinder 則是能找更多東西,例如之前寫過找 register分頁;執行的動作也不一定是「開啟」,可以是貼上、跳過去或其他。
加這些 script 時難免會想「不管什麼東西,只要 能找 的都交給 FuzzyFinder 吧」。

在另一個 plugin: ku 裡這些「能找的東西」被進一步定義為 source
ku 在自訂 source 和相應的動作上有更完整的設計,而不是有「本來是用來找 file」的味道。

ku 找檔案的樣子

ku 找 file

按了 <Tab> 可以選 action,預設 mapping 跟 unite.vim 大致一樣

ku 選 action

最近才發現一個新的,Shougo 寫的 unite.vim,因為看到高手的設定檔換上了,就來試試。

不依靠 completion 介面

Unite.vim 第一個明顯特色是打開尋找 window 後,彈出選項的介面不是 Vim 的 completion 功能(按 <C-X><C-P> 彈出來的那種),而是自己在 buffer 裡畫出來的。
這表示可以進入 normal mode 改你的關鍵字,plugin 也更有機會對選項動手腳,畢竟 completion 原本用在 insert mode,確實限制較多。

左邊 split 的視窗就是 unite,大得嚇人(預設是水平 split 在上方,但還是很高)
這裡可以「多選」,以前是做不到的。

unite 多選

當然也有模糊搜尋,例如輸入 **/*re 7 !2 縮小搜尋結果

filter search

Buffer 裡面可以亂搞,例如可以進 visual mode 多選

visual mode

依照 source 的 kind 選擇能用的動作,概念跟 ku 差不多

選 action

好多好用的 source

Register、分頁都是預設就有了,doc 裡還有一堆,讀完還可以看 github wiki 上的 unite plugins,經常有新的 source 真是強大到令人生氣。
而且沒有限制一次只能找一種 source,例如 :Unite file buffer file_mru 會把檔案、buffer 和最近開的檔案放一起給你選。

找 register

找 register

/ 搜尋的結果當成 source,也是預設功能

find

把任意命令的輸出當成 source,例加下面是 :Unite output:version,這也是預設功能

unite output

結論

兩個問題 1) 開出來的 window 太大,好醜 2) 目前還是太常遇到 error
主要是問題 1 好像無解,所以我要繼續用 FuzzyFinder…… 不然其實解這些 error 也很有啟發性。
至於 ku 試了一下好像速度比較慢(可能 cache 沒設好?)文件也不是很全,有點疑惑為什麼不沿續開發 FuzzyFinder 就好。

按方向鍵的左,變成這樣,應該是鍵盤送出 ^[OD 的關係吧

error

輸入關鍵字時也可以按 <C-J> 切換選項,可是這時還在 insert mode,不小心會按到插字

E21