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

其实我倒是觉得掌压快捷键是最好的做法。。。一般我是左边的 ctrl 掌压右边的用大拇指。在 emacs 里掌压多了,打 FPS 下蹲也是用的手掌,因为长时间按着不累

确实,但可惜的是笔记本上不外接键盘的话就不行了

我觉得判断键盘上哪些键好用不是看按键的大小,而是使用时手指移动的距离和角度。

单从 mac 这种短键程的键盘上来看,虽然 Shift 键挺大的,但是其实没有 Cap 好按,因为按照正常的手指位置,按 Cap 只需要左手向左边稍微平行移动一点,小指就可以按到,而且按的时候也比较好发力,而 Shift 的话需要小指向左后斜方向缩回来,这时候发力其实要比按 Cap 要别扭些,两者小指接触部位也不一样,Cap 一般是小指的第一关节的左侧压在 Cap 上,而 shift 则是指夹盖压在 Shift 上。

从这个角度来说,键盘左侧的几个键,易用程度其实是从上到下一次递减的,TAB > Cap > Shift 。这其实也能解释为什么 Shift 那么大,因为那个位置确实不好按,所以做得大一点让人好按些,想象一下 Shift 位置要变成了两个键,那得多难按。

很幸运,几乎所有的键盘shift都做得很大。要是shift做得和ctrl一样小,那个要难按死了

同意。

我只是换了 Ctrl 和 CapsLok,就已经没法顺畅在别人的电脑上打字了。如果 Emacs 内外有别,岂不是连自己电脑都不能好好用了?

有时候不能换ctrl和CapsLok,影响太大,比如是公司电脑,别人偶尔来用的时候会问 “ 这是什么鬼 ”(我很多年前被问过),而我改了shift也有不少人动我电脑但至今没有人发现过shift有问题。

而我在别人电脑上打字,可能因为我打的都是中文或小写字母,基本不会打大写字母,也从来没发现过任何shift相关的问题,因为基本不按,反倒是ctrl按的频率更高。

经典前天还有个同事问我这个问题 :joy:

我整个键盘就改了两对键(ctrl-caps shift-caps),然后老大一来我的键盘我就怕他乱按

哈哈,我也是换了Ctrl和caps,楼上道友的情况我都遇到了,操作别人电脑老是按出大写,老大想在我电脑改东西完全打不了大写,以为我键盘坏了

我时交换了ctrl – caps。option – cmd。

我觉着小指按caps的位置很方便啊,没发现小手指疼。

主要是让改键只对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群群友 提供的解决思路 ,否则此问题可能无解

常用的才需要绑定快捷键,不常用的很多功能其实用helm-m-x就能快速找出来,emacs的优势不在于按键少,而在于智能化

确实,很多时候快捷键是多少是想不起来的(不常用),比如开关自动换行快捷键是多少(c-x x t),我每次都忘,后来总算是记住了 truncate这个单词,也就counsel-M-x找了

最近发现这个配置还有个优点,只对emacs生效是包括emacs -q在内的,配置完备的emacs用久了以后在回到emacs -q是没法习惯的,但有时候排查问题还得回emacs -q,这个时候除了绑定到F13,F14…的按键以外,其它的按键绑定都能正常使用,emacs就顺手多了,同时emacs -q又是真的emacs -q无任何配置。

付出的代价仅为改变大写字母的输入方式,更适合不常用大写的中文用户: :joy: