基于 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函数就可以了