color-rg 在 windows 下搜索不到内容

大家好,我之前在寻找一款emacs中能够批量搜索和替换的插件,color-rg在linux上表现很好,于是我在windows上也安装了,但是在windows上无论搜索什么它都说no matches。

排查步骤:

  1. 复制color-rg buffer中生成的命令到windows terminal下执行,能得到搜索结果,仅 color-rg buffer提示没有结果;
  2. 怀疑是编码的问题,注释掉color-rg.el中的 encoding 部分的几行代码,情况没有变化,在color-rg buffer中搜索不到任何结果;后改 locale-encoding-system 为 'utf-8 ,然而情况还是没有变化;
  3. 在chatgpt帮助下怀疑可能是斜杠的问题,然而无论我用正斜杠反斜杠还是双反斜杠路径生成的命令,windows terminal始终都能搜索到结果,而color-rg buffer始终告诉我no matches;
  4. 在chatgpt帮助下怀疑生成的命令中单引号windows不识别,因此使用了setq color-rg-search-ignore-rules nil将这块使用单引号的部分删去,然而没有改善;

color-rg生成的命令示例:

rg --column --color=always -H --heading --max-columns 3000 --no-ignore --smart-case -e "dir" "c:\\Users\\ASUS\\.emacs.d"

我始终想不明白为什么windows terminal可以执行并返回结果但是在color-rg中却没有结果。不知大佬们是否能提供一些排查思路,感激不尽。

不好意思懒猫佬,耽误您时间了。

目前我认为可能是个人配置中设置了/bin/bash的问题,windows中没有/bin/bash,所以命令在emacs中就没有结果。

不过奇怪的是它也没有报这个错误,之前使用emacs -Q 的时候default-directory是~,而windows不识别~,多重原因导致我没有正确定位问题。

color-rg-insert-current-line 这条命令的应用场景是什么,一直没有get到点

你搜索到匹配的行可以直接插入到搜索起始文件的位置。

这样你就不用切换到搜索到的buffer复制行,再退出做粘贴,节省时间。

牛逼,get到了。原来这个场景是想把其它某个地方的一行代码拷贝到搜索发起时,准备的空行。

1 个赞

对,有时候我们搜索别的文件,其实就是想把那一个文件的某一行拷贝到当前光标的这一行,这个功能就是为这而设计

1 个赞

问一个小白问题,color-rg 怎么只搜索文件名而不是搜索文件内容? 文档中最接近的表述貌似是: color-rg-rerun-change-files can limit search files with GLOB. 但没有成功

fd命令可以做,社区也有很多插件。

感谢提醒~~

1 个赞

可以试试这个,Stargazers · redguardtoo/find-file-in-project · GitHub

windows 上的参考代码:

(use-package color-rg
  :ensure nil
  :load-path "~/color-rg"
  :config
  (when (eq system-type 'windows-nt)
    (setq color-rg-command-prefix "powershell")))

load-path 为你本地的 color-rg 的目录。

emcs29 可以用 package-vc-install 安装

(unless (package-installed-p 'color-rg)
     (package-vc-install "https://github.com/manateelazycat/color-rg"))
(require 'color-rg)

windows 加上 (setq color-rg-command-prefix “powershell”)

1 个赞