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