花了几天时间写了一个基于 ripgrep 的代码搜索和重构工具: GitHub - manateelazycat/color-rg: Search and refactoring tool based on ripgrep.
color-rg 的功能和 color-moccur 是一样的, 只不过是基于 ripgrep 而不是 grep, 最明显的提升是, 搜索整个目录下的文件简直快到飞起.
使用方法很简单, 绑定按键到下面几个函数:
color-rg-search-input
color-rg-search-symbol
color-rg-search-project
color-rg-search-project-rails
浏览模式按键如下:
按键 |
按键说明 |
C-a |
跳到当前行第一个可编辑字符 |
j |
跳到下一个匹配行 |
k |
跳到上一个匹配行 |
h |
跳到下一个匹配文件 |
l |
跳到上一个匹配文件 |
RET |
打开匹配行关联的文件 |
r |
全局替换 |
f |
保留搜索结果中匹配正则的行 |
F |
删除搜索结果中匹配正则的行 |
D |
从搜索结果中删除当前行 |
s |
用新的关键词搜索 |
d |
在新的目录搜索 |
e |
进入编辑模式 |
i |
重新搜索, 包括 ignore 文件 |
c |
重新搜索, 区分大小写 |
t |
重新搜索, 不适用正则 |
m |
重新搜索, 使用自定义参数 |
q |
退出 |
编辑模式按键如下:
按键 |
按键说明 |
C-a |
跳到当前行第一个可编辑字符 |
C-c C-j |
跳到下一个匹配行 |
C-c C-k |
跳到上一个匹配行 |
C-c C-h |
跳到下一个匹配文件 |
C-c C-l |
跳到上一个匹配文件 |
C-c C-RET |
打开匹配行关联的文件 |
C-c C-d |
删除当前行 |
C-c C-r |
恢复当前行 |
C-c C-q |
退出 |
C-c C-c |
应用修改到文件 |
23 个赞
不想学习的我去看了一眼use-package能不能用在这里,结果是可以把straight.el嵌入use-package来用 还是要学
更新了20几个commit, 应该小问题都修复了, 可以稳定使用了.
已经有这样的项目了,不过我个人都不喜欢这种基于搜索工具的模糊搜索的搜索/跳转工具,我更加倾向于基于语义的跳转, 因为基于正则表达式的搜索/跳转 基本是靠猜的.
我这个主要用于重构.
BTW, dumb-jump 这货还是不错的, 比如 rails 跳转就很准, 但是 elisp 不准, 我写了一个 EmacsWiki: find-define.el 来解决 dumb-jump 在 elisp mode 不准的问题.
1 个赞
elisp 跳转我习惯用的是 xref-find-definitions
, 感觉还不错.
Add function color-rg-filter-results · manateelazycat/color-rg@f6ee364 · GitHub 加了个函数 color-rg-filter-results 可以对搜索结果进行正则表达式过滤, 所以不匹配的行都会从搜索结果中删除, 当然你可以递归过滤, 直到过滤到你想重构的行.
Add new functions: color-rg-filter-match-results, · manateelazycat/color-rg@dac5c5d · GitHub 添加了三个函数 color-rg-filter-match-results, color-rg-filter-mismatch-results, color-rg-remove-line-from-results
现在可以对搜索结果进行正则保留, 正则删除, 单行删除.
这三个函数可以递归对搜索结果进行过滤, 达到快速重构的目的
ztlevi
12
进入编辑模式修改后,浅色主题的修改部分的字体颜色是白色,看不清
最新版加了 color-rg-filter-match-files 和 color-rg-filter-mismatch-files 两个函数.
文件跳转的时候, 也会对匹配行闪一下, 方便搜索的时候查看.
搜索结果buffer的一个限制是,syntax table不能跟对应文件的buffer保持一致,因为会搜索不同类型的文件。这样,在搜索结果buffer里就不方便针对symbol进行操作,只能进行一些简单低级的操作
就是正则表达式里的symbol,有的mode比如c,下划线是symbol的一部分,有的mode比如org-mode,下划线不是symbol的一部分,两种都出现在搜索结果里,操作就不方便了