畅玩emacs:一种全新的emacs快捷键使用方式(总结贴)

20240506 更新:

现在上面的 (global-set-key (kbd "L") 'hydra-caps/body) 已不在使用,连续输入大写字母用键盘原生办法,输入单个大写字母后换回来仍用 逗号+字母 的方法。

emacs不能识别shift输入的大写字母和caps lock输入的大写字母的问题用第三方工具ahk解决了。而且shift键模拟ctrl键的行为也模拟得更像了。因为不用在emacs端对每个键都绑定一次,代码量也更少了。

ahk端代码28行

#HotIf WinActive("ahk_class Emacs")  ;;emacs之内有效
+a::send "^a"
+b::send "^b"
+c::send "{F13}" 
+d::send "^k" ;;ctrl+k,del一个字符改一整行
+e::send "^e"
+f::send "^f"
+g::send "^g"
+h::send "^h"
+i::send "{F14}"
+j::send "{F15}" 
+k::send "{F16}"
+l::send "^l"
+m::send "^!n"
+n::send "^n"
+o::send "^!p"
+p::send "^p"
+q::send "^x^e" ;;ctrl+x ctrl+e
+r::send "{F17}"
+s::send "^x^s"
+t::send "{F18}" 
+u::send "{F19}"
+v::send "^v"
+w::send "^w"
+x::send "^x"
+y::send "^y"
+z::send "^xu" ;;undo
#HotIf

shift+c,i,j,k,r,t,u,这几个键我不希望和ctrl键的行为保持一致,于是绑定到F13-F19,然后在emacs端在绑定到自己写的几个hydra命令上,如:

(global-set-key (kbd "<f14>") 'hydra-dumb-jump/body);;I键
(global-set-key (kbd "<f15>") 'hydra-git/body) ;;J键
(global-set-key (kbd "<f16>") 'hydra-search/body) ;;K键

之前输入单个大写后换回来没有问题,但连续输入N多个大写字母,中间还有间隔切换这些体验就不太行,现在用原生方法体验非常棒了。

最后感谢 @BlindingDark 和 不知名TG群群友 提供的解决思路 ,否则此问题可能无解