emacs helm “排除” 某种pattern

我调用 rtags-find-references 后调出了 一个helm 的窗口。 里面有很多是test 文件的引用(文件路径名包含了test 字符)。 我在pattern 中输入 test, helm 只显示 test 相关的 (符合期望) 我在pattern 中输入 !test, helm 只什么都不显示了, 期望是只是将 test 的过滤。

这是哪里出错了呢?

附上截图一共参考:

image

因为没有这种写法,可以看看emacs lisp的正则表达式语法

因为没有这种写法 ===》 ! 的写法是根据这里来的。 https://www.reddit.com/r/emacs/comments/4k3zin/helm_does_something_like_an_inverse_pattern_exist/

可以看看emacs lisp的正则表达式语法 ===》 参考 https://stackoverflow.com/questions/406230/regular-expression-to-match-a-line-that-doesnt-contain-a-word, 尝试了下 ^((?!test).)*$ 也没有测试出结果…

涨知识了。我用helm-mini和helm-swoop都有效果。不起效的原因可能是这个功能是可选的,然后rtags-find-references没有启用。我对helm了解不多,@xuchunyang 可能知道。

试试[^\(test\)]有没有用?

没听说过有这个功能,正如 OP 在三楼提到的,只有个别 Helm 命令(如 helm-mini)有 ! 指令:

多谢 @xuchunyang @casouri.

我把这个问题问了rtags 的作者,有可能是那里的问题。 https://github.com/Andersbakken/rtags/issues/1288

@casouri 尝试了一下 [^(test)], 也不行。

helm用的不多,猜想应该和ivy一样有“把当前过滤结果放到一个buffer中”的功能,然后反向选择只要修改buffer就可以了,一个曲线操作的思路