Skip to content

命令列搜尋(slf) ​

SwiftList 還附帶一個小巧的命令列夥伴工具 slf——一個 fzf 風格的模糊搜尋器,搜尋的是 App 本身已經維護好的同一份索引,而不是自己再重新掃描一遍。它是給那些常年待在終端機裡、也希望能用上 SwiftList 那套搜尋能力(模糊比對、拼音別名、網路磁碟,一應俱全)的人準備的,不只是侷限在搜尋視窗裡。

slf 需要 SwiftList App 已經在執行——它是透過一條本機的、按使用者區分的管道跟 App 通訊,而不是自己重新掃一遍。如果 App 沒有執行,slf 會快速失敗,把錯誤訊息輸出到 stderr,而不是卡住不動。

設定 ​

slf.exe 會和 App 一起安裝。在安裝程式的工作選擇頁面勾選將 slf 命令列搜尋工具加入 PATH,就能在任意終端機裡直接以 slf 執行——這一步會把 SwiftList 的安裝目錄加進系統 PATH。勾選之後請重新開啟一個終端機視窗;安裝時已經開著的那個不會自動感知到這個變化。

如果安裝時跳過了這個選項,仍然可以直接從 SwiftList 的安裝目錄裡執行它。

基本用法 ​

slf

會開啟一個互動式選擇介面:打字即可模糊篩選,跟 App 自己的搜尋完全一致——包括中文檔名的拼音別名比對(參見搜尋語法)。

按鍵作用
打字篩選結果
↑ / ↓移動高亮項
Page Up / Page Down翻頁
← / →移動查詢文字中的游標
Tab切換選取/取消選取目前高亮的結果(選取的列會顯示 *)
Enter輸出選取的路徑——如果沒有選取任何項目,就輸出目前高亮的那一個——然後結束
Esc / Ctrl+C不輸出任何內容,直接結束

預先帶入查詢關鍵字 ​

slf report

以及

echo report | slf

兩種方式都會以 report 作為初始關鍵字開啟介面並直接篩選。不管哪種方式,這都只是預先帶入查詢框、然後像手動打字一樣觸發同一次搜尋——它自己不會做任何自動選取或自動輸出,你仍然需要自己導覽、按 Enter/Tab 確認。

多選結果 ​

Tab 用來標記/取消標記目前高亮的這一列。標記狀態會在你變更查詢關鍵字之後依然保留——所以你可以先搜一個檔案標記它,再搜別的檔案繼續標記,以此類推。狀態列會顯示目前一共標記了幾項。只要有標記項,按 Enter 就會輸出所有被標記的路徑(每行一個),跟目前高亮的是哪一項無關。

把結果用到別的命令裡 ​

slf 的互動介面是直接畫在主控台上的,完全不經過標準輸入輸出串流——唯一會真正寫進 stdout 的,只有按 Enter 時輸出的那些最終選取路徑(每行一個)。這也是它能跟常見 shell 技巧組合、把結果傳給別的命令的原因。

PowerShell:

powershell
code (slf)
$path = slf; code $path

cmd.exe(沒有內建的命令替換語法,用 for /f):

cmd
for /f "delims=" %i in ('slf') do code "%i"

侷限 ​

  • 沒有預覽面板——這是有意為之的取捨,App 自己的動作選單與預覽已經涵蓋了這部分需求。
  • 需要 SwiftList App 正在執行;slf 自己不會索引任何東西。