XYplorer-搜索篇(Search)
返回: XYplorer使用指南
XYplorer的搜索及最佳搜索替换工具Everything | Search | Find
1. XYplorer的搜索
1.1 搜索功能有哪些
使用List All Commands...
命令,通过键盘依次按下Alt->H->O呼出,然后输入关键词find,得到相关的命令如下:
1 | #260 Edit | Find Files... (Ctrl+F) |
继续输入关键词search,其中与搜索有关的命令有:
1 | #262 Edit | Repeat Last Search |
继续输入关键词Live Filter Box,其中与搜索有关的命令有:
1 | #675 Window | Show Live Filter Box (Alt+F3) |
注意:使用List All Commands...
命令搜索到的命令项目通过鼠标左键双击可以启动命令。
使用Customize Toolbar...
命令,通过键盘依次按下Alt->T->B呼出,然后在左侧或右侧的搜索框输入关键词组Find by,得到相关的工具栏有:
1 | Find by Tags |
这两个按钮是特有的搜索关于Label(标签)和Tags(标注)的内容的按钮。
-XYplorer的搜索主要体现在四处: Find Files, Quick Search, Live Filter Box, 文件列表关键词匹配。
1.2 Find Files
1.Edit->Find Files(Ctrl +F)
需要指定搜索目录,关键字。其他过滤条件可选。但搜索速度慢,长时间运行可能会很卡。
什么是Find Files Tab
首先介绍什么是Find Files Tab,如下图所示:
Find Files Tab可以通过Ctrl+F呼出,也可通过在键盘依次按下Alt->E->F呼出。
Find Files Tab使用帮助
地址栏输入:
1 | rtfm "idh_find.htm"; |
了解了Find Files Tab后,我们可以开始讲解Search Template了。
Search Template
什么是Search Template
首先,Template在XY语境中应该翻译为“模板”。那么Search Template就是用于Find Files Tab中搜索功能的一个模板。
那么Search Template保存的是什么呢?我们看Find Files Tab那张图片,可以看到有许多选项卡,比如Name & Location, Size, Date, Attributes, Tag, Contents, Dupes, Exclude。每个选项卡都是有参数可以勾选的,而这些参数都保存Search Template中。
Search Template的保存
如下图所示,这些勾选和添加的参数我都想要保存起来,并且会经常使用这些参数,我想要将其参数保存到Search Template中,下次打开Find Files Tab后,我可以很快地加载这些参数,而不用一个一个地设置它们。
那么我该如何保存?
Search Template命令在菜单栏Edit->Search Templates…中,可以通过按键依次按下Alt->E->A呼出。
如下图所示为Search Template的界面:
呼出Search Template界面后,点击Save to Template…:
这里我命名为Find:Everywhere-Label:Red-Excluded:C,D。
Search Template的载入
好了,我们点击Find Files Tab中的"Reset Filters",如下图所示:
![FindFilesTab-Reset Filters](XYplorer-Search/FindFilesTab-Reset Filters.png)
这样"Reset Filters"按钮下方的Applied filters条件参数全部清空。
现在该如何加载每个选项卡的参数呢?
同样,我们先通过按键依次按下Alt->E->A呼出Search Template界面,然后选中对应的Search Template后点击"Load Template"按钮:
这样就可以看到Find Files Tab加载了各个选项卡的参数了。
Find Files Tab的使用
子选项卡和"Applied filters"的对应关系如下图所示
Find Files Tab共有8个子选项卡,每个选项卡参数设置后,为了使这些选项卡参数都生效,需要勾选对应的"Applied filters",确认好搜索条件后,可以点击"Find Now"进行搜索。
Search Template进阶
Search Template使用说明指南
详细使用说明请在地址栏输入:
1 | rtfm "idh_searchtemplates.htm"; |
Search Template保存文件命名
Search Template是一个模板,模板文件保存在<xydata>\FindTemplates中。
Template创建时,需要为当前Template进行命名,命名后进行保存,保存的文件名称与Template的一致,但由于Windows将如下字符作为保留字符:
The following reserved characters:
- < (less than)
- > (greater than)
- : (colon)
- " (double quote)
- / (forward slash)
- \ (backslash)
- | (vertical bar or pipe)
- ? (question mark)
- * (asterisk)
关于Windows命名规范详情可参考Naming Files, Paths, and Namespaces - Win32 apps | Microsoft Docs,以上引用内容为保留字符的描述。
所以文件名就不应该出现这些保留字符,不然就会出现文件名非法的情况。然而XY允许使用这些被Windows作为保留字符的字符。为了避免Windows文件名非法,XY采用了"% & Hex(charcode)"的方案来转换这些字符。
在地址栏输入:<xydata>\FindTemplates,看到我保存的Search Template文件:
可以发现’:'被解释成"%3A"了。Windows保留字符的对于的十六进制数如下:
1 | /* 以下为十六进制数 */ |
给出对应ASCII表
Search Template快速载入
每次载入都需要点击菜单栏"Edit->Search Templates…"然后选择模板文件,再载入,这样速度太慢了。于是参考了load search template and open search box directly - XYplorer Beta Club的脚本,其脚本如下:
1 | $template = popupmenu(replace(listfolder("<xydata>\FindTemplates", "*.ini", 4), ".ini")); |
各位可以试着复制上面的内容,然后在菜单栏"Scripting->Run Scripting…"呼出Run Scripting…,也可以通过键盘依次按下Alt->S->R呼出。把复制的脚本内容粘贴,然后运行这个脚本(前提是你有保存Search Template文件哦)。
这个脚本受限于"loadsearch"函数,该函数不支持载入包含对Windows保留字符进行编码的文件名,所以我在上面脚本基础上进行修改,将编码的保留字符还原为ASCII字符,修改好后的脚本如下:
1 | // Get the base filename of user-selected template file |
可以把脚本文件命名FastLoadSearchTemplate.xys,然后保存在<xyscripts>中,然后通过按键依次按下Alt->U-M呼出"Manager User-Defined Commands",设置快捷键为Shift+T
使用效果如下:
1.3 Quick Search
2.Edit->Quick Search(F3)
功能很强大。需要结合匹配规则进行搜索,详细使用说明请在地址栏输入:
1 | rtfm "idh_quicknamesearch.htm"; |
我写过的一个简易版按Tag搜索脚本就是参考以上内容才写出来的。
1.4 Live Filter Box
3.Live Filter Box。
使用方式:Window->Show Live Filter Box
。在地址栏最右侧可以看到,如图
Ctrl + Alt + X进入,搜索关键字。
该功能用于当前目录下筛选文件(极其适合目录文件过量的情况下进行筛选)
假设我们需要筛选出C:\Windows\SysWOW64\certcli.dll
,你只知道关键字"cert",在Live Filter Box键入"cert"后,
这是一次模拟筛选,该功能场景范围过窄但好用。
1.5 文件列表关键词匹配
在浏览文件列表时,输入要匹配文件名关键词(必须从目标文件名的首位字母开始输入)可以快速查找文件,使用效果图如下:
2. Everything与XYplorer的集成
Everything内容打开到XYplorer侧
Options->General->Context Menu
,如图
Explore:
1 | $exec("你的XYplorer目录\XYplorer.exe" "%1") |
Explore Path:
1 | $exec("你的XYplorer目录\XYplorer.exe" /select="%1") |
Explore和Explorer Path的区别:前者打开这个文件;后者打开这个文件所在的父目录。
参考:Everything and XYplorer - My Everything Integration Settings - XYplorer Beta Club
这里有个以前用过目前弃用的Scripts的链接:Everything for xyplorer - XYplorer Beta Club。如果你感兴趣,可以尝试一下。
当然,纠结Scripts文件来调用Everything's command-line ES
服务来搜索是没有必要的,复杂麻烦而且没直接使用Everything来得快。你可以跟我一样,添加一个Everything按钮,或者设置一个热键调用XY(请参考XYplorer间接调用Everything)。
XYplorer间接调用Everything
仅在当前目录下搜索(搜索的目标包括当前目录和当前目录的所有子目录),示意图如下,
具体显示步骤如下,
1.创建脚本文件。菜单栏Scripting->Go to Scripts Folder
来到<xyscripts>的目录下,创建名为EverythingCurpathSearch.xys
脚本文件,内容如下,记得修改everything目录
版本一[可选,推荐]
1 | $everything = "D:\PortableApps\Everything\everything.exe"; //填写everything.exe路径 |
以上每行语句都有一个Tab哦。
版本二[可选]
版本二特别注意:搜索的关键词首尾不能分别带有"。也就是没办法进行准确搜索。比如"Common Files"
1 | $everything = "D:\PortableApps\Everything\everything.exe"; //填写everything.exe路径 |
2.绑定热键。菜单栏User->Manage Commands...(Ctril + Alt + F9)
1 | Cpation:CurpathSearch |
这样就设置完成了。开始使用吧,在XYplorer当前Tab所在当前目录下按Alt+2,键入你想要搜索的key words,然后Enter即可。
Script编写思路:通过命令行调用everything,everything想要完成当前目录搜索,需要知道主程序的外部接口[?],需要获取当前目录和用户键入值。
Script中runret()可参考XYplorer.chm
编写的脚本很简陋,其目的主要是为了打开Everything,并自动化地添加上当前目录。
如果有兴趣的同学们可以自行研究下XYplorer Script(可参考 XYplorer-脚本篇(Scripting) 和 XYplorer Scripting笔记 ,熟悉流程控制语句和常用的Script Command就可以进行更高逻辑的功能实现了。