m2fox
1
问题描述
“快捷键是一种稀缺资源”,这是在使用、折腾了一段时间emacs之后的强烈感受。
经常自己鼓捣出来一些日常常用的小函数,就迫不及待地使用global-set-key把它绑定到一个快捷键,方便使用;与此同时每天也在不停地引入各种新的插件。
时间久了,就发现没有被默认快捷键或各种mode、各种插件的快捷键占用的按键越来越少,每次绑定按键前都要试半天,看还有哪些按键可以使用,非常之焦虑。
使用M-x
输函数名执行函数,代替使用快捷键,确实可以一定程度解决这种焦虑,但是还是有不少操作都属于每天的高频操作,确实是想把它们绑定一个快捷键的。
请教各位是否有解决这种焦虑的行之有效的解决方案或者建议?能在较长的时间段内大幅度减轻这种焦虑。
感谢~
1 个赞
cireu
3
统计你的按键频率
其实绑成key sequence也是可以的,不一定要绑单个键位
2 个赞
只绑定最常使用的操作,然后安装helm/counsel/smex等M-x增强工具。
1 个赞
我不喜欢「快捷键」:刻板、机械、容错率低,这个印象多半是好几年前试图学习 Vim 留下的后遗症。我喜欢并且偏好使用 M-x
,对「快捷键」这回事时刻保持警惕,现在也基本不会新设置快捷键。
3 个赞
除非通用性很强的按键,不然别用global-set-key,浪费快捷键。你可以用define-key来针对mode来绑定快捷键,这样好多按键就可以复用了。
1 个赞
henryt
10
绑了个位数的快捷键,但都过段时间就忘。现在除了spacemacs设置好的,索性都M-x
keyboard macro 结合命令的方式会有遇到问题吗?比如我有时候想录制宏,包含 isearch-forward 命令及输入, replay 的时候会报错,好像是 minibuffer 中不允许再次执行命令之类的错误,而且不是必现的,每次急着写代码的时候遇上,又没时间去看,通常就临时把命令绑定到某个按键来解决,这样不会报错。
不清楚你指的问题是什么,要是能给出一个具体的、能重现的例子就好了。
「minibuffer 中间不能使用 minibuffer 」是符合预期的行为,比如你不能 M-x M-x
,会报错:
completing-read-default: Command attempted to use minibuffer while in minibuffer
(开启了 Recursive Editing / enable-recursive-minibuffers
则不受此限制)
我当前是用的 xah-fly-keys 。
它基本把常用的,编辑相关的所有功能都绑定完了。最常用的都是在command mode中一个按键搞定。
次之的都是prefix(一般是space) + 两次按键。
需要做的就是先适应,然后,在自己需要增强的地方用自己的函数或者插件函数替换掉。
M-x 也会用,如果操作多,可以使用defalias定义一些别名:
(defalias 'lf 'load-file)
这样 M-x lf 就可以了。
反正最终目地就是,少敲
4 个赞
同意keyfreq。
非spacemacs doom用户记得装smex来使命令按使用频率排列。
另外spacemacs风格的SPC * *
的按键空间完全用不完。对于需要各种evil state都生效的按键,C-*
快用完了,频率稍低的绑到M-*
,也不难按。
m2fox
16
看到了各种很棒的方法,收获颇多!看来需要结合多种方案才能解决自己的焦虑症,感谢提供建议、分享经验的各位大佬:)
我都不绑C-*,我记得C-*默认是给minir-mode的的。
目前就是苦于无法重现,但是在着急写代码的时候偶尔给我来一出。
等哪天能重现了,再贴出来。
这个其实是从 Emacs 25 引入的一个 bug ,在启用 pyim 时能够重现,具体见:
Emacs bug 在 master 中修复了,应该会包含在 Emacs 27.1 中:
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32108