spacemacs counsel ag 如何搜索 $ ^ 符号

具体使用的是 spacemacs counsel-ag.

\^abcde 可以搜索出 ^abcde 之类的。

\$abcde 就不行了。一直不知道怎么办。有一天忽然发现\$\abcde 可以搜出来 $abdce

但是又发现 \$/ 可以搜出 $/

有谁能解释一下吗?

ag 接受正则表达式(regex expression)

正则表达式中 ^ 表示行首,$ 表示行尾的,要搜索 $ 就要加转义符号 \


抱歉没看清问题,请忽视这个回答

但是 \^ 起作用, \$ 没起作用啊。 \$\ 才有用。

\$ 可以:

~ $ echo '$abc' | ag '\$abc'
$abc

注意在 Shell 中运行使用时,Shell 可能会展开 $VAR,比如上面用双引号就不行了:

~ $ echo '$abc' | ag "\$abc"

这里不行因为 \ 被 Shell 消耗了,ag 实际搜索的是 $ab(用 --debug 参数能看到搜索的是什么),这时用 "\\\$ab" 应该可以。

我没用过 counsel-ag,不清楚什么状况。如果写在 Emacs Lisp 的 String 中的话,可能还得再考虑一层 Escape。

你至少给出一段测试代码(最好是一份完整的最小配置)或图片,证明问题的存在,否则我只能告诉你:不可能

gg

这是用 spacemacs develop 分支的 counsel-ag。我刚刚试了一下,用 helm-ag,像 @xuchunyang 在 shell 中使用 \\\$,或者像 @twlz0ne 一样,在 scratch buffer 解析 “\$”,都是可行的,甚至 minibuffer 调用 counsel-ag 都是可行的。

仔细一看才发现快捷键调用的是 spacemacs/counsel-search.

这应该是 spacemacs 的问题。谢谢各位。