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