使用Emacs的人,如果肯折腾,肯定有重新映射键盘的经历。我原来经常看到的是把Ctrl和Capslock交换,但是我感觉没什么道理,因为Ctrl已经用的很熟练了,换了反而不方便,而且对其他程序影响太大。那么我们就要使用默认的方式吗?除非你想把手弄抽筋,否则还是调整一下的好。今天我就说一下整体的键盘配置,可以不影响正常使用,提升总体舒适感,又可以同时方便Vi和Emacs的使用。
首先我把所有Windows特殊的按键都给取消了(例如Ctrl+Shift或Ctrl+Space切换输入法,连续按五次Shift出现辅助功能等),只用一个中文输入法切换,设为Ctrl+Home。这些是有用的,首先,玩游戏的同学都知道,经常会因为按Shift等特殊键(刺客信条驾驶船只的时候连按Shift,结果Windows弹出了莫名其妙的框;或者玩FPS的时候,出现输入法)影响游戏体验。因此把这些特殊键取消极大地减少了不必要的麻烦。另外很多程序也用到了Ctrl+Space,例如Emacs设置mark的时候,用Ctrl+Space非常方便,所以最好不要把Ctrl+Space设为输入法切换的组合键。
第二就是把Esc和Capslock交换。这在Windows下就是改个注册表的事(Linux下好像更简单,具体操作请各位搜索Internet,本文提供思想,具体实施非本文重点)。之所以这样交换,是因为能同时方便Vi和Emacs。Vi就不说了,Esc是切换模式最常用的键,如果他就在你左手小拇指的位置,那岂不是最方便?而且请看当年Bill Joy创造Vi时用的的键盘(注意Ctrl和Esc的位置,以及hjkl四个键):
(引自http://www.catonmat.net/blog/why-vim-uses-hjkl-as-arrow-keys/)
你现在应该知道为什么Vi和Emacs会设置那样的快捷键。
第二个原因就是Emacs的Meta。同时按“Ctrl+某键”对于大多数人(or程序员)没什么问题。但是同时按住“Alt+Shift+某键”很多人就感觉麻烦了,但是很多Emacs的命令却是这样的,比如回到文档开头(Meta+<,其实需要Alt+Shift+,)。Emacs真正的按键困难,在于Meta键!幸运的是,Emacs中,Meta可以用Alt键(Putty下只能用左Alt),也可以用Esc来代替,而且不用像Alt那样必须同时按住Alt和某个键,你可以先按一下Esc,进入Meta模式(没这个模式,只是方便解说),然后你就可以按相应的字母键,极大地方便了使用,减轻了手的负担。例如回到文档开头,只要先按Esc,再按“Shit+,”,快得很。只要把Esc放到了Capslock的位置,使用Esc当作Meta,Emacs的快捷键操作瞬间变得流畅起来,又不伤手,真是舒畅啊。
另外,现在Ctrl,Shift,Esc三个键在一起了,调用Windows任务管理器单手就可以了!(哈哈,算是额外收获)
最后,你可以现在就仔细看一下你的键盘,看看能发现什么。这是我的发现:CapsLock和右边的Alt,Win,右键模拟这四个键非常干净,而其他主键盘区的键都有很多磨损(包括上下左右四个方向键),已经不是很清楚了。这说明,这几个不怎么常用的键占用了好的位置却没有很好的利用,Esc那么常用的键却没有在你的手掌范围之内。右侧的键就罢了,Capslock和Esc真是让人感觉,非换不可!而且如果能把右侧的三个键去掉,稍改布局,换成上下左右四个方向键,就比较完美了。现在的键盘设计师,不知道你们搞这么多年,为什么不改良一下设计呢?
所以去掉特殊按键,把Esc换到Capslock,获得的效益最大,同时能方便Vi和Emacs的使用,不影响已有习惯,是目前最合理的安排方式。