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