在所有地方都启用常春藤模糊匹配,但在刷卡器中除外


10

我已经使用flx-ido-mode了一段时间了,我喜欢它。常春藤可以通过使用相同的方式ivy--regex-fuzzy

问题是swiper现在也将使用模糊匹配,在这种情况下,我不太喜欢它(至少一直没有默认设置)。

因此,除了之外,我想继续对Ivy使用模糊匹配swiper。有没有一种配置方式?还是可以通过某种方式告诉swiper我我现在正在真正寻找“ this”子字符串?

Answers:


16

除了在中,我想继续对常春藤使用模糊匹配swiper

Ivy引用这些函数来确定哪个“ regexp生成器”的变量用于哪个收集函数ivy-re-builders-alist

ivy-re-builders-alist is a variable defined in ‘ivy.el’.
Its value is ((t . ivy--regex-plus))

Documentation:
An alist of regex building functions for each collection function.

Each key is (in order of priority):
1. The actual collection function, e.g. ‘read-file-name-internal’.
2. The symbol passed by :caller into ‘ivy-read’.
3. ‘this-command’.
4. t.

Each value is a function that should take a string and return a
valid regex or a regex sequence (see below).

Possible choices: ‘ivy--regex’, ‘regexp-quote’,
‘ivy--regex-plus’, ‘ivy--regex-fuzzy’.

If a function returns a list, it should format like this:
’(("matching-regexp" . t) ("non-matching-regexp") ...).

The matches will be filtered in a sequence, you can mix the
regexps that should match and that should not match as you
like.

因此,为了将默认的regexp生成器从更改ivy--regex-plusivy--regex-fuzzy,但将保留为swiper

(setq ivy-re-builders-alist
      '((swiper . ivy--regex-plus)
        (t      . ivy--regex-fuzzy)))

或者,以编程方式

(with-eval-after-load 'ivy
  (push (cons #'swiper (cdr (assq t ivy-re-builders-alist)))
        ivy-re-builders-alist)
  (push (cons t #'ivy--regex-fuzzy) ivy-re-builders-alist))

有关详细信息,请参见(ivy) Completion Styles

我不太喜欢[模糊匹配](至少一直没有默认设置)

Ivy允许您通过其hydra界面动态旋转正则表达式生成器。的相当隐蔽最后一句(ivy) ivy--regex-fuzzy暗指这一点,更全面的描述下可以找到(ivy) Hydra in the minibuffer,但它看起来像手册给定的有点过时它是一个小而自上次发布。

结果是,自2017年7月4 日起,Ivy允许您在完成时通过C-omivy-rotate-preferred-builders)循环浏览正则表达式构建器。编辑:作为所指出Asme Just评论,默认键绑定改为C-oM2019年2月6日


您能详细说明一下完成循环吗?例如,如果我开始进行滑动搜索,Co将立即给我一个“命令执行:无法打开加载文件:没有这样的文件或目录,ivy-hydra”消息。
B_old

@B_old尝试先安装可选ivy-hydra软件包。默认键绑定是否应该存在一个可选的(即不总是安装)功能的道德问题已经被提出和现状似乎不太可能很快改变。如果您对ivy-hydra本手册没有解决的其他问题,请考虑为他们创建新的Emacs SE问题。
罗勒

ivy-rotate-preferred-buildersC-o M 目前默认为我。
Asme,

@AsmeJust谢谢,这是两个多星期前所做的向后不兼容的更改:github.com/abo-abo/swiper/commit/…–
Basil

2

如果您想在swiper中关闭正则表达式匹配,但在其他地方保持激活状态,请将其添加到您的user-init-file

(setq ivy-re-builders-alist
      '((swiper . regexp-quote)
        (t      . ivy--regex-fuzzy)))

如果您只想停用一次,请点击M-rswiper。


+1表示方便的M-r装订。但是请注意,OP仅指定了他们希望禁用模糊匹配。尚不清楚哪个正则表达式生成器应替换它。
罗勒
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.