spacemacs ivy layer 中文搜索问题

系统:win10

搜索工具:ag, rg

在 spacemacs 里面,启用 helm layer 时,按 SPC / 就可以在当前项目里搜索中文,ag 的话无需设置,rg 的话按照 这篇教程 里的方法,设置了编码 (modify-coding-system-alist 'process "rg" '(utf-8 . chinese-gbk-dos)) 之后,也可以在当前项目里搜索中文了。

但是在只启用 ivy layer 时,即使使用上面的设置,按下 SPC / 也始终无法正常搜索中文(英文可以正常搜索),有没有大佬知道这是什么原因导致的,就是因为这个原因才一直使用 helm layer :disappointed_relieved:

补充:在外部命令行里可以直接使用 rg 中文关键字 来搜索,但是在 eshell 里使用 rg 命令搜索中文的话会直接没反应

补充:调的是 counsel-ag 这个函数

我啥也没设置 , 中文搜索也没问题啊 , 也是spacemacs

顺便说一下,必须输入3个字才出结果,如果只有两个字的话,最后要补一个空格。

Mac 和 linux 上没问题,win 上有问题

这是用的ivy-posframe吗?另外,spacemacs也集成doom-modeline了?

是ivy-posframe,spacemacs也确实带doom-modeline了,早都有了,大佬你这modeline好多人用呢

原来spacemacs支持这么多中mode-line theme了。话说ivy-poframe使用感受如何?

挺好的啊 , 放中间舒服多了

见我在原帖下的评论。 ivy-layer用了start-process-shell-command,这个调用cmdproxy,所以改rg/fd没用

谢谢,不过没怎么看懂解决方案…

SPC / 在启用 ivy layer的时候具体调用的是哪个命令?

C-h k 看了下 SPC / ,调用的是 spacemacs/search-project-auto,继续看文档,这个函数调用的是 spacemacs/counsel-search,然后这个函数的源头似乎是 counsel-ag

看了定义,就是 counsel-ag

周一去公司看看,可能是 counsel-ag的问题

提前谢谢大佬!:laughing:

(defvar spacemacs--counsel-commands
  '(;; --line-number forces line numbers (disabled by default on windows)
    ;; no --vimgrep because it adds column numbers that wgrep can't handle
    ;; see https://github.com/syl20bnr/spacemacs/pull/8065
    ("rg" . "rg  --smart-case --ignore-file '.rgignore' --no-heading --color never --line-number --max-columns 220 %s %S .")
    ("ag" . "rg  --smart-case --ignore-file '.rgignore' --no-heading --color never --line-number --max-columns 220 %s %S .")
    ("pt" . "pt -e --nocolor --nogroup %s %S .")
    ("ack" . "ack --nocolor --nogroup %s %S .")
    ("grep" . "grep -nrP %s %S ."))
  "An alist of search commands and their corresponding commands
with options to run in the shell.")

试试在 user-config里面加上这个设置, 让counsel-ag 使用rg作为backend

@deerainw

我加上了这段配置,SPC / 还是只能搜英文不能搜索中文(但是直接 M-x counsel-ag 可以搜索中文),我现在其实只保留了 rg,ag 已经删掉了。

另外我这里 counsel-ag 的表现很奇怪,其实它是可以搜索中文的,当我输入 锻炼锻炼身体 的时候都可以搜出结果,但是输入 锻炼身 三个字的时候就不行。

image

image

image

@guanghui.qu

和ag或rg没关系,有时候是会这样犯神经的

这个跟 counsel-ag 更新 result 的机制有关,helm-ag的interface还是更成熟一点。

我现在用的 helm-ag + rg

好吧,谢谢山人了,我打算把 ivy layer 下的 SPC / 改成 helm layer 里面那种定制过的 helm-ag 来用