大家好,我之前在寻找一款emacs中能够批量搜索和替换的插件,color-rg在linux上表现很好,于是我在windows上也安装了,但是在windows上无论搜索什么它都说no matches。
排查步骤:
- 复制color-rg buffer中生成的命令到windows terminal下执行,能得到搜索结果,仅 color-rg buffer提示没有结果;
- 怀疑是编码的问题,注释掉color-rg.el中的 encoding 部分的几行代码,情况没有变化,在color-rg buffer中搜索不到任何结果;后改 locale-encoding-system 为 'utf-8 ,然而情况还是没有变化;
- 在chatgpt帮助下怀疑可能是斜杠的问题,然而无论我用正斜杠反斜杠还是双反斜杠路径生成的命令,windows terminal始终都能搜索到结果,而color-rg buffer始终告诉我no matches;
- 在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不识别~,多重原因导致我没有正确定位问题。
xiaoC
5
color-rg-insert-current-line 这条命令的应用场景是什么,一直没有get到点
你搜索到匹配的行可以直接插入到搜索起始文件的位置。
这样你就不用切换到搜索到的buffer复制行,再退出做粘贴,节省时间。
xiaoC
7
牛逼,get到了。原来这个场景是想把其它某个地方的一行代码拷贝到搜索发起时,准备的空行。
1 个赞
对,有时候我们搜索别的文件,其实就是想把那一个文件的某一行拷贝到当前光标的这一行,这个功能就是为这而设计
1 个赞
问一个小白问题,color-rg 怎么只搜索文件名而不是搜索文件内容?
文档中最接近的表述貌似是:
color-rg-rerun-change-files
can limit search files with GLOB.
但没有成功
oLd-Y
13
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 的目录。
ltylty
14
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”)
2 个赞