与其使用逗号作为leader-key的概念,为什么不使用更方便的空格呢?与spacemacs或者doom emacs的理念类似,不过我的想法是,空格键单独作为leader-key,SPC SPC来输入空格,同时也不去动emacs自身的快捷键,是不是会比devil这样的设计更好?
我用原生按键主要是为了在中文输入法模式下也能快速执行快捷键,虽然在有了sis之后也可以试着用模式编辑,但是还有很多积累来的org-mode快捷键没法改。
还是原生的 Emacs 按键方便。
我在 macOS 上试了下,按完 , 后,什么也按不了了,卡死了 Emacs,最后只能强退。 用的最新的 Emacs 30
用着有点乱啊,徒增烦恼
最近小拇指有点疼,Ctrl按多了
我从来不用小指按 Ctrl,用的是大拇指(或者在机械键盘上用手掌),不会疼。小拇指太脆弱了
其实也不是Ctrl,是改成 Ctrl 的 Shift。 不过还好,小拇指累了就换大拇指按Ctrl。
可能有些离题,不过看到大部分emacser因为小指的问题转而追寻一些诸如evil之类的替代方案时,就会有些庆幸小时候练的小提琴竟在这里派上了用场
这个 leader-key 是可以改的,我改成了分号,而且还能定义多个 leader-key,感觉还是看个人习惯了,我 vim 下的 leader-key 也是分号
哈哈哈,是的,我最初也有这样的问题,然后慢慢习惯了,不过还是看个人习惯了。这个还能定义其它按键到 M-。模式编辑的最大的吸引力,对我来说真的就是可以一手托腮,一手在那操作看代码,不过用这个,基本也还挺方便的
作者应该也是基于自身痛点写的这个包,每个人需求不太一样,就是看能不能习惯了,可以试用下,要是不习惯,用自己习惯的方式就好了,不过看到有人探索新的方式,就感觉真的很棒
这个和 god mode 有啥区别?我看了下来,好像还并没有比 god mode 省按键。比如 god mode 直接 space x f 就等于 c-x c-f。这个需要 ,x ,f 是四个按键。并没有省按键,按起来甚至比 C-x C-f 效率还低。
我还是喜欢我这种临时进一下阅读模式的方式
一个快捷键进去以后, 单手以只读模式看代码, 心理负担小。
一旦进入阅读模式, 可以单手浏览、跳转、搜索和翻译。
devil这种心理负担还是太大, 要记住各种技巧, 感觉人是工具的工具。
这个唯一的好处应该就是 Ctrl 和 Meta 键不需要长按,比如 C-x C-f,最高效的方式肯定是原生的按住 Ctrl 再连着按 x f ,确实没有比 god 省,但因为保留了 Ctrl 的步骤(因为没有长按,某种程度上也更麻烦了),我这边体验上是比 god 省心,效率方面应该不如其它方式
可以改 shift 吗,哈哈哈
这个包的思路有点类似粘滞键,和meow的keypad-mode有点像,不过受制于emacs本身的限制,shift没办法做为devil-key。
我从meow换成devil用了一两周,感觉最大的痛点是移动光标的命令(C-b, C-f, M-b, M-f这种)因为是绑定在global-map下的,没有repeat-mode支持,导致切换光标方向时不能直接, f f f b b 这样,必须 , f f f , bb。给Alt单独设置一个devil-key又感觉太奢侈。。。
尝试了一下把devil-mode和repeat-mode结合,感觉意外的还行
例如把常用的类似功能的命令放在一个repeatable的keymap里面,这样执行任意一个该keymap的命令的时候相当于无缝进入modal-mode,但是退出repeat-mode的时候还是需要支付一个额外按键的成本(C-g或者repeat-exit-key),例如我的配置:
(defvar-keymap ctrl-motion-map
"f" #'forward-char
"b" #'backward-char
"n" #'next-line
"p" #'previous-line
"a" #'move-beginning-of-line
"e" #'move-end-of-line
"d" #'puni-forward-delete-char
"k" #'puni-kill-line
"t" #'transpose-chars
"v" #'viper-scroll-up
"V" #'viper-scroll-down
"." #'repeat)
(keymap-set global-map "C-S-v" #'viper-scroll-down)
(defvar-keymap meta-motion-map
"f" #'forward-word
"b" #'backward-word
"a" #'backward-sentence
"e" #'forward-sentencne
"k" #'kill-sentence
"d" #'puni-forward-kill-word
"t" #'transpose-words
"y" #'yank-pop
"^" #'delete-indentation)
(defvar-keymap structural-edit-map
"f" #'puni-forward-sexp-or-up-list
"b" #'puni-backward-sexp-or-up-list
"u" #'backward-up-list
"d" #'down-list
"e" #'puni-end-of-sexp
"a" #'puni-beginning-of-sexp
"o" #'puni-expand-region
"k" #'kill-sexp
"t" #'puni-transpose
"z" #'pop-to-mark-command
"C" #'puni-convolute
"R" #'puni-raise
"S" #'puni-squeeze
"<backspace>" #'backward-kill-sexp
")" #'puni-syntactic-forward-punct
"(" #'puni-syntactic-backward-punct
"]" #'puni-slurp-forward
"[" #'puni-slurp-backward
"}" #'puni-barf-forward
"{" #'puni-barf-backward)
(define-keymap :keymap global-map
"C-M-f" #'puni-forward-sexp-or-up-list
"C-M-b" #'puni-backward-sexp-or-up-list
"C-M-u" #'backward-up-list
"C-M-d" #'down-list
"C-M-e" #'puni-end-of-sexp
"C-M-a" #'puni-beginning-of-sexp
"C-M-o" #'puni-expand-region
"C-M-k" #'kill-sexp
"C-M-t" #'puni-transpose
"C-M-z" #'pop-to-mark-command
"C-M-C" #'puni-convolute
"C-M-R" #'puni-raise
"C-M-S" #'puni-squeeze
"C-M-<backspace>" #'backward-kill-sexp
"C-M-)" #'puni-syntactic-forward-punct
"C-M-(" #'puni-syntactic-backward-punct
"C-M-]" #'puni-slurp-forward
"C-M-[" #'puni-slurp-backward
"C-M-}" #'puni-barf-forward
"C-M-{" #'puni-barf-backward)
(defun repeatize (keymap)
"Add `repeat-mode' support to a KEYMAP."
(map-keymap
(lambda (_key cmd)
(when (symbolp cmd)
(put cmd 'repeat-map keymap)))
(symbol-value keymap)))
(repeatize 'ctrl-motion-map)
(repeatize 'meta-motion-map)
(repeatize 'structural-edit-map)
这样每当我执行C-,M-或者C-M-作为prefix的命令时,repeat-mode启用,我只需要按一个键就可以执行对应keymap下的其他命令。
退出repeat-mode可以用:1 . C-g(或者,g)2. 按repeat-exit-key(我设置为了Return)3. 等待repeat-exit-timeout长的时间
小哥我有一个god-mode的fork,有没有兴趣试试,GitHub - YangZhao11/god-mode at struct 这个和upstream差的有点多了,要是有人有兴趣把他从新package一下就好了
键盘上有两个control键呢,怎么方便怎么来,单手双手都可以