Grey
#+ :OPTIONS ^:nil
emacs smex的替代品counsel
尝试原因
之前使用emacs的生涯中,大部分时间都在使用spacemacs的配置。由于自己对于设计实现的一点好奇,加上spacemacs配置过于庞大,催生了自己维护一套精简够用的配置的想法。这个配置也已经维护了很长时间,只是使用频率不是很高。而最近两年个人的工作性质有了一点变化,这也让我有机会一段时间内不需要特别完备的配置就可以满足我工作的要求。正好,借此机会来继续维护我自己的配置。
之前看过陈斌的一篇文章,也就是一年那篇文章。从里面看到了一个推荐的插件smex,但是使用下来具体我用过的spacemacs的两套机制相比体验略差。因此,尝试回归一下这方面的体验。
我自己的个人配置: speedemacs
几种流行配置的探索
- purcell 首先我进行了类似的功能关键词搜索,找到了一个插件,支持ivy的模式。看了一下,刚好是purcell开发的一个小插件。我觉得可能purcell自己的M-x改进应该有自己的配置实现方式。为此,直接看了他的配置信息中M-x的实现。具体的信息如下:
看起来,他的配置是直接使用了emacs新版本中的一个功能来实现的,自己插件似乎也没有用上。这样,我直接在我的配置中做一个对照的抄袭看一下效果,但是没有实现什么改善。看起来,这个实现还是有更加独到的地方。 - spacemacs 回到spacemacs,我搜索一下这个配置中没有smex,但是有一个helm-smex。如果两个框架融合,肯定有不错的体验了。我启动了这个配置之后发现,其实这个也没有用。也可以理解,我用的框架其实是ivy,为什么这个插件在这里保留了暂时也不知道原因。或许真的是一个僵尸插件,用不上。
启动之后看到的M-x的调用信息如下:
而这个配置中的功能对应的插件文件如下:
看起来,这个实现使用的插件是counsel。 - 陈斌的配置 这个只在这里补充2个截图信息吧,我看这个应该是跟spacemacs的方式相同的。
自己配置的分析
接下来,其实目标很明确了。我需要去找一下counsel的插件用一下这个功能。比较令我开心的是,我在配置其他功能的时候这个配置已经被纳入到了我的配置中。因此,接下来只是修改配置即可。
自己配置的修改尝试
配置比较简单,具体如下:
#+beginsrc emacs-lisp (global-set-key (kbd "M-x") 'counsel-M-x)
#+endsrc
使用效果:
从上面的结果看,其实已经很符合我对这个功能的期待了。
总结自己的需求以体验现状
最初的需求:好用、快速、高效、稳定。
当前的效果:
- 相比smex在体验上来说更好了一些。
- 配置本身做了减法,减少了一个插件的使用。
- 执行速度上没有太大的变化,但是操作体验的改进会让效率有所提升
小结
从使用体验上看,满足了自己对于初步改进的期待,值得长期使用下去。