怎么用rg.el 搜索中文

求问各位大佬,怎么用rg.el 这个库来搜索中文呢?或者你们用rg搜索中文怎么搜的,encoding这些参数怎么传入进去的。总不至于是直接命令行搜的吧

color-rg.el 就可以做到

1 个赞

系统?如果是Windows会很麻烦

哇,懒猫,感谢大佬

windows。。。

忍了吧,rg用了compile,compile调用了cmd,改这个的in/out的编码容易出莫名其妙的问题

linux表示毫无压力,直接输入就可以了

Windows10下用不了,改rg.el的rg-build-command函数,把这个函数倒数第二行pattern改成 (encode-coding-string pattern locale-coding-system)

拼接rg命令的时候把中文转成gbk编码,拼出的这个命令cmd.exe才能认识它。

这样就可以搜索中文内容了,但是文件夹路径有中文没处理,一般不用中文路径,先不管了。

参考另一个帖子

1 个赞

color-rg.el

2 个赞
;; win32平台解决rg.el无法正常搜索中文,在调用rg.exe前使用本地编码修改pattern 
(advice-add 'rg-run :around  
            (lambda (orig-fun &rest args)  
              (let ((pattern (car args)))  
                (apply orig-fun  
                       (encode-coding-string pattern locale-coding-system)  
                       (cdr args)))))

windows 平台,如果要搜索的目标文件的 buffer 编码是 utf-8,而 rg.el 的搜索结果的 buffer 是 chinese-gbk, 那可能是 emacs 本身的编码问题,可以尝试在配置文件中加入如下代码:


(when (eq system-type 'windows-nt)
  (prefer-coding-system 'utf-8)
  (setq default-process-coding-system '(undecided-dos . windows-1250)))

一直都是用rg.el搜索中文。设置process-coding-system-alist就可以了

(set 'process-coding-system-alist
     '(
       ("[pP][lL][iI][nN][kK]" utf-8-dos . gbk-dos)
       ("[cC][mM][dD][pP][rR][oO][xX][yY]" utf-8-dos . gbk-dos)
       ))

linux下中文英文没什么区别。

如果你使用 Windows 可以参考这个:使用 rg.el 在 Windows 上搜索 Unicode characters (包含 中文、Emoji 和 罕见文字)