命令行搜索(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:
code (slf)
$path = slf; code $pathcmd.exe(没有内置的命令替换语法,用 for /f):
for /f "delims=" %i in ('slf') do code "%i"局限
- 没有预览面板——这是有意为之的取舍,App 自己的动作菜单与预览已经覆盖了这部分需求。
- 需要 SwiftList App 正在运行;
slf自己不会索引任何东西。