我命令行的默认shell是xonsh,它与counsel非常不搭配,应为它的字符串统统需要“…”来包裹。以前我是通过(setenv "SHELL" "/usr/bin/bash")
来绕过xonsh,但是我发现虽然现在(getenv "SHELL")
依然是bash,但是counsel-rg
依然会使用xonsh,这样的话我就无法使用正则了
edit:
counsel-M-x
用的是bash
我命令行的默认shell是xonsh,它与counsel非常不搭配,应为它的字符串统统需要“…”来包裹。以前我是通过(setenv "SHELL" "/usr/bin/bash")
来绕过xonsh,但是我发现虽然现在(getenv "SHELL")
依然是bash,但是counsel-rg
依然会使用xonsh,这样的话我就无法使用正则了
edit:
counsel-M-x
用的是bash
试试设置 counsel-rg-base-command
。
还可以包装一个脚本强制 bash 调用 rg。
调整选项 shell-file-name
可以只改终端所用的 shell,login shell 不改。
而且执行命令用不着 shell,counsel-rg 可以不依赖 shell,如果作者改代码的话。
可以啦,谢谢!
counsel 大部分是基于counsel–async-command,这个又是调用start-file-process和start-file-process-shell-command,这两个都用到了shell-file-name和shell-command-switch,看一下你这两个变量的内容是什么