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 自己不會索引任何東西。