因为shift+数字9来输入括弧很不方便,所以我想在双击f键后输入左括弧,

所以在 init.el里面创建一个命令,然后 (keymap-global-set “f f” 'f1),但是报错: error: Key sequence f f starts with non-prefix key f, 我现在不想要前缀,就想用双击ff输入左括弧, 这样方便,该怎么弄?

这种需求更适合用 abbrev-mode ,具体用法可以看这篇文章:Emacs: Abbrev Mode

1 个赞

多谢,这就是我想要的

我现在是通过 snippet

# -*- mode: snippet -*-
# name: {
# key: r
# --
{$1}$0

然后我的 company 会设置下 delay,如果我想通过 snippet 只需要 r 之后马上按一下 tab 就会扩展成 {$cursor} 然后再按下 tab会跳到末尾 {content}$cursor

可以试试在输完 content 之后, {content$cursor} 状态再按 C-f 右移光标到达 {content}$cursor

也可以,不过对我来说 tab 更好按一些,特别我是 dvorak, f 相对 qwerty 更远

这个不是你想不想要前缀的问题。因为单独敲击f键代表输入f,所以当你敲下第一个f时,Emacs就不知道是要直接输入f还是等待你敲击下一个f,因此这个keybinding是无效的。有效的keybinding——例如C-x b——这个C-x本身并没有绑定任何动作,这样Emacs就能知道要等待你敲下一个键。换句话说,Emacs是没有“双击键盘”这种说法的,所谓双击f在Emacs看来就是两次单击f

有一个包 evil-escape 实现了通过快速按 fd 来退出 insert state,这两个按键单独按时,是输入相应的字符,但是连按时(两个字符的输入间隔小于 evil-escape-delay,比如 0.1s),那么就会触发此功能。

可以参考一下,但是可能实现会比较复杂和不够优雅。

Definition:

It can be improved by checking a delay.

Example:

Or:

多谢你的帮助

但是我用abbrev 已经实现了

多谢你的帮助,我用abbrev 已经实现了