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


#22

如果跨多种编程语言重构, 确实需要小心.

建议搜索以后, 在 color-rg 里面按 f 或者 F 先过滤不同的文件类型进行过滤

最后按 r 键批量替换同一种类型文件的所有字符串.


#23

https://github.com/manateelazycat/color-rg/commit/03d42337ffb9a5eb2fb49a4f8392f52a011a96cc 今天推送了个补丁, color-rg 现在会针对 foo 或者 "foo 搜索字符串先转换成 \foo 或 "foo 再传递给 ripgrep


#24

https://github.com/manateelazycat/color-rg/commit/30e9cba77bd550cece0a20dff5c1ddde297877b7 今天写了个补丁, 更好的支持 org 文件内容搜索, 主要增强了:

1.搜索 org 文件的时候, 自动展开org文件中匹配关键字的区域, 以前需要手动按Tab展开

2.当关键字在 org link 语法块内会自动进行位置修正, 比如 [[file link]] 会向前移动两个字符的位置, 比如关键字在 http link 的连接字符串中 [[ link content ] [ link title]] , 而不是在标题区域, 会自动跳转到连接字符串的开头位置

上面的两个增强会让 color-rg.el 对 org 文件内容的搜索更加方便.

还遗留的问题是, 在 org 文件中, 如果有中英文混合的情况下, move-to-column 的位置不正确, 还在想办法解决, 如果有哪位高手有方案, 欢迎分享解决方案. :wink:


#25

应该现做两个实验

@node VHDL程序组件

搜索 “VH” 的时候应该是 行:7

搜索 “组件” 的时候应该是 行:17

因为我用的是utf-8的编码,得到这个结果的原因是因为一个中文可能是三个char编码而成的

还有就是index是从1开始,而不是从0开始

move-to-column 他把中文当成2个char

解决这个问题可以从两方面着手

1.修改rg的代码,让他对utf-8编码的计数不是按三个char,而是按2个char

2.分析buffer中的当前行,分别将中文字符按3个、2个char计数,得到与rg对应的那个column


#26

今天写了个补丁 https://github.com/manateelazycat/color-rg/commit/95fcfcacc1ac938ffd1f984e4a28a4aa49752a4a

终于解决了中英混排时正确定位到 ripgrep 输出的关键字列位置.


#27

不用那么麻烦,直接用string-bytes函数就可以了


#28

今天写了一个小补丁: 跳转匹配的时候, 显示匹配行所在的函数名

使用场景: 经常需要在大型项目中查看某个变量的引用情况, 如果这个变量在多个文件中都有, 而且所处行的函数非常长, 这个小特性就非常有用, 在分析变量引用的同时不用滚动窗口就知道所处的函数区域, 加快源码分析的速度.


#29

能和

结合一下吗?

让他可以使用color-rg的搜索结果作为数据源


#30

我只用我自己的lazy-search , 不开发我不用的功能,没时间,抱歉,但是我欢迎任何人的补丁。


#31

好吧

理解

可能是我想多了


#32

好像发现了一个bug

c语言的代码一般都有tab 在我的电脑上tab是8个空格

在有tab的行跳转到的column会出偏差


#33

给可重现样本发到 issue 里面去吧,谢谢


#34

把move-to-column 改成 goto-char就可以了


#35

先给我一个重现文件吧,这个要多测试一下


#36

搜索 debug-enable


#37

我测试了你的文件,move-to-column 没有问题。 我觉得你最好用 github 的 issue, 把你的配置,你遇到的问题,重现环境,甚至你觉得正确的PR一次提交,这样在论坛每次只说一句话效率很低,也耽误看帖子人的事件。


#38

如果只是我一个人有这个问题

那很有可能是误报了 可能是因为我的配置太乱了

抱歉


#39

多测试一下吧,如果是bug,欢迎提交issue。

还有就是,你用的是你自己改造的版本还是我的版本?至从你上次提交PR以后我又写了很多补丁。


#40

确实是我的问题

我用的还是我的版本

在你的版本中 color-rg-jump-to-column 应该是连中文的问题都解决了

不过 现在还是不能同时搜索两个关键字吗?

那个功能不难实现的吧!


#41

是的,最新版支持中文跳转和Org-Link连接的跳转,现在已经比较智能的跳转到对应的位置,其他 ripgrep 工具都不支持中文列跳转。

不难, 只是不知道同时搜索两个关键字的初衷是啥?