1869_修改counsel-M-x的配置让命令提升默认状态下的命令模糊搜索功能

Grey

全部学习内容汇总: https://github.com/GreyZhang/editors_skills

1869_修改counsel-M-x的配置让命令提升默认状态下的命令模糊搜索功能

维护并使用我自己的emacs一段时间了,现在倒觉得spacemacs有几分回不去了。但是,总会在很多场景中想起来其他的配置中比较好用的功能,这样也就催促我自己的配置再次提升了。

主题由来介绍

我使用了基于ivy的counsel-M-x,这会给命令输入带来更直观且更有效率的提升。但是,我发现我的配置默认情况下并不是很好用,有时候熟悉的命令输入关键词都无法实现匹配。最初,这个问题我定位为我对ivy提供的通配符不熟悉,因为它是空格符号。当我熟悉之后,我习惯性在调用 counsel-M-x 之后会习惯性直接先打一个空格。这样,会让我的输入匹配的更精准。慢慢地,我也在考虑是不是能够让这个空格输入实现一个自动化的修正。带着这个问题,找了一些别人的文章。最终发现,其实我需要做的不是修改空格而是修改默认的初始输入绑定符号。

资料整理过程说明

我找到的一份资料: search - Counsel M-x always shows "^" - Emacs Stack Exchange

要点细节分析

首先说明一下我遇到的问题,比如,我知道有把org导出称为html的命令。但是如果直接输入html,这个匹配会失败。效果如下:

1869_修改counsel-M-x的配置让命令提升默认状态下的命令模糊搜索功能_第1张图片

  • 上面输入的html并没有把我想要的命令给显示出来。

1869_修改counsel-M-x的配置让命令提升默认状态下的命令模糊搜索功能_第2张图片

  • 这里说明了出现匹配失败的原因。这个最根本的原因不是在于通配符,而是在于这个命令默认增加了^,而这个符号其实也很好理解,它正好是我们熟悉的perl正则表达式代表开头的符号。也是这个符号,让默认的匹配从开头起作用。
  • 如何修改呢?直接按照上面抄作业即可。

实际探索体验以及效果

我自己的配置修改中增加了如下的配置:

(use-package avy
  :ensure t
  :config
  (ivy-mode 1)
  (setq ivy-initial-inputs-alist nil))

再次测试运行效果:

1869_修改counsel-M-x的配置让命令提升默认状态下的命令模糊搜索功能_第3张图片

这一次的匹配效果就非常理想了,再加上按照使用次数执行的统计排序,这样让这个操作的效率提升了很多。

小结

使用spacemacs的时候似乎也有这样的问题,当初也没有解决。我后来一直使用helm,导致我做这样选择其中很重要的一个原因就是我发现的这个问题,或者说是差异。当然,我现在依然在怀念spacemacs中的helm的模糊匹配,它的模糊匹配效果相比目前我使用的配置来说强大不少。很典型的一点就是它能够实现关键词乱序的匹配,这样在寻找不熟悉的功能的时候更有效率。不知道我现在的框架中是否已经存在了这样的配置,这会是我接下来一段时间的一个功能探索点。

你可能感兴趣的:(editor,emacs,编辑器)