FindInProject
Sublime Text 3 项目文本搜索插件
详情
安装数
- 总数 1K
- Win 557
- Mac 292
- Linux 217
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Mac | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
README
FindInProject
Sublime Text 3 项目的文本搜索插件。
这是一个替代 Sublime Text 默认的“在文件中查找”命令的插件。它包括一个交互式结果视图和一个在后台可配置的搜索线程。
结果使用 TF-IDF 和 Page-Rank 算法的基本实现进行排序。
安装
该插件已在 Windows 和 Linux 上进行测试,但应在 macOS 上也能正常工作。要从 https://packagecontrol.sublime.net.cn/ 安装它,请按以下步骤操作
- 打开命令面板,找到“Package Control: Install Package”
- 搜索 FindInProject 并安装。
要从 GitHub 安装,请按以下步骤操作
- 通过选择菜单找到 Sublime Text 包件文件夹
Preferences -> Browse Packages...
- 将 git 仓库克隆或下载到包件文件夹下名为“FindInProject”的新文件夹中
配置
所有配置都可通过菜单进行
Preferences -> Package Settings -> FindInProject
这包括
- 默认设置,可以将它们复制到用户设置中进行修改
- 默认快捷键映射,可以在用户快捷键映射中覆盖
- 默认颜色方案,可以将其复制到用户颜色方案进行修改
设置包括以下选项
- 要尝试的编码
- 结果视图中的最大行长度
- 要忽略的目录和文件扩展名
- 要忽略的文件大小
- 过多匹配次数(用于取消大的搜索)
- 术语分隔正则表达式模式(默认为非单词字符,如空格和标点符号)
- 页面引用正则表达式模式(默认为单词字符周围的两个方括号,例如
[[样本页面]]
) - 等等(设置文件中包含描述性注释)
使用方法
在常规上下文中(使用默认快捷键映射)以下快捷键可用。
快捷键 | 命令 | 描述 |
---|---|---|
ctrl+shift+f |
在项目中查找 | 打开"在项目中查找"输入面板 |
在结果视图(使用默认键映射)时,以下快捷键可用。
快捷键 / 操作 | 命令 | 描述 |
---|---|---|
上箭头 / 下箭头 |
find_in_project_next_line | 在结果中前后浏览 |
Pageup / Pagedown |
find_in_project_next_file | 在文件间前后浏览 |
左箭头 / 右箭头 |
find_in_project_fold | 在所选文件中折叠/展开结果 |
Enter / 双击 |
find_in_project_open_result | 打开当前选中的结果 |
有关详细信息,请参阅菜单中可用的键映射文件
Preferences->Package Settings->FindInProject* menu.
搜索和结果排序
包含多个搜索和排序算法。每个算法都可以配置不同的权重等。
从页面和搜索查询中提取术语作为小写实体。这包括将驼峰词拆分成单独的术语。
算法:* TF-IDF 搜索 * 页面名称搜索 * 页面排名排序 * 页面年龄排序
TF-IDF 搜索
TF-IDF 算法在文档索引过程中扫描所有文件,并从每个文件中提取一组术语。这些术语被添加到整体字典和当前文档的字典中,并计算每个术语的使用次数。这些计数被归一化到文档中的总术语数,并插入到IDF映射中。
使用搜索查询术语计算每份文档的得分
doc_score = SUM (search_term.normal + document_term.normal) / len(overall_terms)
FOR search_term in search_terms
IF search_term in document_terms
WHERE document_term = document_terms[search_term]
将每份文档术语的得分与阈值常数进行比较,以确定该文档是否应包含在结果中。得分通过加权平均与其他搜索得分合并。
相关设置 find_in_project_tfidf
:* enabled
- 是否启用此算法 * verbose
- 是否在此算法日志中记录调试或信息级别 * weight
- 在计算加权平均时使用的文档术语得分权重 * threshold
- 包括在结果中的搜索术语得分阈值
页面名称搜索
每个文档的页面名称被拆分成术语并包含在搜索中。
相关设置 find_in_project_pagename
:* enabled
- 是否启用此算法 * verbose
- 是否在此算法日志中记录调试或信息级别 * weight
- 在计算加权平均时使用的得分权重 * threshold
- 包括在结果中的得分阈值
页面排名排序
页面排名算法识别每个文件中的页面引用,每个页面名称是通过从文件名中删除路径和扩展名得到的。页面引用(默认)是由双方括号包围的页面名称。
每个文件在文档索引过程中作为部分被扫描并添加到页面节点图中,所有页面引用都被添加为图中的链接到其他页面节点。
一旦所有文件都已扫描,则页面排名算法按如下方式计算页面排名得分
DEF calculate_ranks:
FOR page IN graph
ranks[page] = (1 - damping) / len(graph) +
damping *
SUM ranks[in_page] / in_page.out_count
FOR in_page IN page.in_links
使用迭代方法重复此过程,其中每个迭代计算下一组排名,直到连续排名得分的增量之和小于某个指定的阈值(epsilon)
ranks = MAP page: 1 / len(graph) FOR page IN graph
WHILE delta > epsilon
WHERE delta = SUM abs(ranks[page] - prev_ranks[page])
FOR page IN graph
prev_ranks = COPY(ranks)
calculate_ranks()
}
将每个页面排名得分与其它搜索得分合并使用加权平均。
相关设置 find_in_project_pagerank
:* enabled
- 是否启用此算法 * verbose
- 是否在此算法日志中记录调试或信息级别 * weight
- 在计算加权平均时使用的得分权重 * damping
- 在每个迭代中计算页面排名时使用的页面排名 damping
* epsilon
- 决定何时停止迭代的页面排名 epsilon
页面年龄排序
每个文档的最后修改日期用于排序结果搜索。
相关设置 find_in_project_age
:* enabled
- 是否启用此算法 * verbose
- 是否以此算法记录调试或信息级别 * weight
- 在计算加权平均时使用的分数权重
鼠标事件
Sublime Text当前实现仅允许简单的鼠标事件映射,但这些映射不支持选择器上下文。因此,任何映射可能与定义的其他映射冲突。
双击鼠标事件的默认处理方式是选择并查找双击的单词。已添加命令 find_in_project_mouse_event
以提供对选择器上下文的支持。这允许对双击鼠标事件进行自定义映射,以根据选择器上下文支持两种操作,例如
文件 ${USER}/AppData/Roaming/Sublime Text 3/Packages/User/Default.sublime-mousemap
[{
"button": "button1", "count": 2,
"command": "find_in_project_mouse_event",
"args": { "commands": [
{
"command": "find_in_project_open_result",
"run_for_selector": "text.findinproject"
},
{
"command": "find_under_expand",
}
]}
}]
版本
- 0.1.0: 初始版本
- 在项目中搜索所有文件并单独在缓冲区中显示结果。
- 0.2.0: 提升搜索
- TF-IDF和页面级别算法的基本实现。
- 0.2.1: 用户体验调优
- 在结果缓冲区中显示查询。
- 双击打开结果。
- 0.3.0: 扩展搜索算法
- 重构搜索机制以更好地支持多种算法
- 解决标准文件查找结果面板中双击问题的方法
- 解决页面级别错误
- 解决与单元测试导入问题
- 添加页面名称搜索
- 添加文件年龄排序