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

不是这个提示,比如 按 r 进入替换后,再按 RET 开始替换, 现在就在提示: “ 按 y 或者 n 来表示是否替换当前行,按!替换所有。”

纯属小白个人建议

有计划支持preview feature吗?counsel-rg可以边输入边查看搜索结果,然后如果需要再打开buffer,这个功能挺实用的

snails

多谢!

提个意见,希望可以将每个backend的一些hardcode的prefix长度改成可以设置的变量。比方说这里https://github.com/manateelazycat/snails/blob/master/snails-backend-rg.el#L94。6个字符太长了。

然后麻烦再请教个问题, 目前是没有办法在snails下,将搜索的结果打开成为一个buffer吗?比方说ivy里C-c C-o就是ivy-occur。将snails rg 的结果直接打开成color-rg的buffer,应该蛮有用的。

你要的是ivy,直接用ivy吧

color-rg 和 snails 有自己的设计目标,不会什么都兼顾的

1 个赞

我的是win7,编码设置也比较奇怪,实测了magit,ORG,eshell后得出的:

(prefer-coding-system ‘utf-8)
(set-default 'process-coding-system-alist
             '(("[pP][lL][iI][nN][kK]" utf-8 . gbk-dos)
               ("[cC][mM][dD][pP][rR][oO][xX][yY]" utf-8 . gbk-dos)
               ("grep" utf-8 . gbk-dos)
               ("cmd" gbk-dos . gbk-dos)
               ("ag" utf-8-dos . gbk-dos)
               ("rg" utf-8-dos . gbk-dos)
               ("diff" utf-8-dos . gbk-dos)
               ("sdcv" utf-8 . gbk-dos)
               ("find" utf-8 . gbk-dos)))

在使用color-rg时编码也出现问题,要将下面这句注释掉才正常,应该是多加了一次编码。

(when (memq system-type '(cygwin windows-nt ms-dos))
     (setq command-line (encode-coding-string command-line locale-coding-system)))
1 个赞

挫见:在浏览器和服务器间传递任何参数都没有编码问题,因为浏览器把所有中文参数做了url编码,emacs在调用命令行工具时是否可以也效仿浏览器做法用url编码,我用(url-encode-url)处理了flycheck不支持中文文件名的问题, 但ripgrep估计没有url编码支持

请问color-rg-rerun是重复上一次搜索吗?

(setcar compilation-arguments
            (color-rg-build-command keyword dir globs literal no-ignore case-sensitive file-exclude))

我运行的时候compilation-arguments为nil

不是,是生成了color-Rg buffer后,重新搜索一遍,更新结果。你想要的是类似ivy-resume吧,目前还没有实现的函数可以直接用

哦,谢谢,那我HACK下不关掉color-rg,也可以暂时用下。

您好,macos Big Sur在emacs中使用color-rg 的view mode 中,命令color-rg-jump-prev-keyword 在有些行结果数中间的行会卡住,不知道为什么呢?比如说 color-rg 过滤结果Buffer的一半位置卡住

emacs -Q 模式,只载入exec-path-from-shell.el和 color-rg.el,emacs 27 和 28 都不行。 录了一个gif。。有点大没传上来

最好有重现文件或目录,方便我调查原因

这个问题我也遇到了,不知道您是否解决了

@manateelazycat 懒猫大神,我也遇到了 @CheungHsu

您好,macos Big Sur在emacs中使用color-rg 的view mode 中,命令color-rg-jump-prev-keyword 在 有些行 结果数中间的行 会卡住,不知道为什么呢?比如说 color-rg 过滤结果Buffer的一半位置卡住

emacs -Q 模式,只载入exec-path-from-shell.el和 color-rg.el,emacs 27 和 28 都不行。 录了一个gif。。有点大没传上来

类似的问题,我 emacs -Q 进行了测试,只 (require 'color-rg),在一个单一的 .org 文件执行命令 color-rg-search-input-in-current-file, 仍会出现这个问题。

测试的 org 文件在链接获得:https://drive.google.com/file/d/1lWFmrhXbFEIZICW-ZsuFiHPRYqK-UVPA/view?usp=sharing

在文件中搜索 rsync 关键词,命令 color-rg-search-input-in-current-file

文件无法访问

不好意思,忘记设置访问权限了,现在这个链接应该可以访问了

更新一下最新的版本应该就可以了,是 color-rg-max-column 默认太小的原因,我从 300 调成 3000了。

我在有些文件夹ok,在有些不行,所以转向了occur+wgrep+iedit。现在我来设置一下max-column试一试.

@manateelazycat 我还发现一个按键绑定的问题,我用的vim键位风格,所以默认绑定有点别扭。我自己交换一下键位舒服一点,貌似与vim风格更妥帖

  :bind (:color-rg-mode-map
         ("h" . color-rg-jump-prev-file)
         ("l" . color-rg-jump-next-file))

按键自己定义吧,没有绝对的舒服,特别是对于 emacser, 一万个人有一万种按键