1884_emacs ivy minibuffer中上下行导航快捷键修改

发布时间:2024年01月11日

???????? 全部学习汇总: GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used.

???????? 我自己凑了一组emacs的配置使用了很长一段时间,很大程度上的功能在模仿spacemacs,但是我的配置更加轻量化,因此在使用的时候延迟感会少很多。因此,轻度的编码等工作用起来还算是顺手。由于之前用久了spacemacs,里面的很多组合键已经形成了肌肉记忆。因此,习惯了之后在按键冲突的时候会出现操作失误。Minibuffer之中,上下行的移动就是一个典型的例子。

???????? 在spacemacs中,minibuffer中光标的上下行移动可以使用C-j 、C-k或者C-p、 C-n,这两个都可以。由于一直用evil,vim的模式,4个导航键感觉更加习惯。因此,在使用spacemacs的时候,我大部分的操作都是用C-j、 C-k的按键操作。这样,当我换成我自己的配置之后就会出现异常。而正确的方式则是使用C-p、C-n,这个在大多数的emacs配置中都是奏效的。但是,既然emacs的可定制化这么高,我还是尝试做一次定制。

???????? 我先从网络上找现成的配置,抄了几个都没有效果。接下来,尝试找李杀的教程。找到了这个链接: Emacs: Change Minibuffer Keybinding (xahlee.info)

???????? 这里的这种定义方式我做了参考,不仅仅是直接定义一组快捷键,也尝试了先定义为nil之后再处理。

???????? 因为,C-j在emacs默认的配置中有其用途:minibuffer-complete-and-exit

???????? 因此,在调用这组组合键的时候基本上就是minibuffer直接退出。

???????? 进一步,我又找到了这部分信息:Minibuffer Maps (GNU Emacs Manual)

???????? 阅读了一下,不明其意,但是感觉似乎与这个有一定关系。然而不幸运的是几个都尝试了一下,全都没有成功。后来看了下C-n的组合键绑定:

???????? 算是后知后觉,现在使用了ivy之后这个minibuffer已经被ivy-minibuffer取代掉了。于是,增加如下配置:

(define-key ivy-minibuffer-map (kbd "C-j") 'ivy-next-line)

(define-key ivy-minibuffer-map (kbd "C-k") 'ivy-previous-line)

???????? 之后测试,已经有了期待中的效果了。

文章来源:https://blog.csdn.net/grey_csdn/article/details/135489532
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。