基于 ripgrep 的代码搜索和重构工具

你试过了吗?

我做插件就是给自己用,而不是更多人用。 别人喜欢我的插件就用,不喜欢我也不会去追求。

你自己fork吧,你的需求我满足不了。

1 个赞

我不用这个插件,没有试过,我用的同类插件,有此功能,感觉可能满足你的需求。我不知道此插件是否支持,支持的话,你可以试用一下,不支持的话就需要定制或者向作者提需求。

那就是pr?

什么 名字?

我选rg.el吧

我是把ag.el调用的命令及参数改造成了rg

今天增加了两个新命令:Add new functions: `color-rg-search-input-in-current-file' and `color… · manateelazycat/color-rg@4b3ad5e · GitHub

  • color-rg-search-symbol-in-current-file
  • color-rg-search-input-in-current-file

color-rg 以前主要针对当前的目录,或者Git项目进行递归搜索,但是有时候只想搜索和重构当前文件的内容,上面的两条命令就是把搜索和重构功能限定在当前聚焦的文件范围。

1 个赞

赞!大文件搜索比swiper快多了!:smile:

是的,聚焦单文件以后,ripgrep 的速度秒杀 swiper/moccur这种。

1 个赞

swiper属于增长型搜索吧

其实你用多了,发现增长性搜索只是看着很酷,更像探索性的操作。

但是平常编程一般都是自己的代码,搜索和重构之前想输入啥都清清楚楚,目标很明确,而且往往就是光标处的符号。

这时候color-rg这种又能搜文件和目录,同时还内置批量重构功能的插件更为实用。

rg --column --color=always -H --heading --smart-case -e “可以给单词着色。”

c:/Users/yzl/AppData/Roaming/.emacs.d/README.md warning: extra args ignored after ‘rg --column --color=always -H --heading --smart-case -e "可以给单词着色。’

color-rg finished with no matches found at Thu May 16 09:35:31

color-rg的中文搜索怎么不给力? 需要单独额外的配置?明明光标下就有该词组(windows系统)

中文是可以搜索的,检查一下你Emacs的编码设置,可能和你终端的编码设置不一样。

Windows 代码页 问题。

启用win10的全局utf-8选项,虽然这是一个实验性选项,但我使用了一段时间了,除了少部分旧软件内置菜单和显示编码非unicode所以无法正常显示外,使用体验非常好。

windows 下无法进行中文搜索问(其实 日文 韩文 乃至法语等其他拉丁脚本也一样)其实不是emacs编码设置问题,而是emacs对subprocess的命令编码无论你如何设置,在传输到cmdproxy shell 的时候都会转换到你的 locale code page,通常对于中文用户就是gbk编码,因此 rg ag等默认接受utf-8参数的工具接到的是乱码,当然搜索不到。具体bug可以看这个mailing-list Passing unicode filenames to start-process on Windows?

启用后 添加如下片段到你的 启动配置中:

(when (and (eq system-type 'windows-nt)
           (eq w32-ansi-code-page 65001))
  (setq w32-system-coding-system 'utf-8)
  (define-coding-system-alias 'cp65001 'utf-8))
7 个赞

小文件用swiper,大文件和目录用rg

color-rg 能不能对 rg工具 增加参数的搜索? 比如 我实际用rg搜索的时候,会使用 -T, --type-not参数来 忽略某种文件类型, color-rg 有 可以设置这种参数的功能吗? 或者说 emacs下怎么实现这种功能?

C-h f color-rg-build-command

你可以改一下这个函数

感谢 确实有这个功能,能不能 举个例子怎么使用color-rg-build-command这个函数,我不会lisp