我刚开始使用 GNU Emacs 作为我的文本编辑器,我担心会因为不断地用小指按下控制键而感染 "Emacs Pinky" 而导致重复性劳损伤害。有哪些方法可以避免患上这种类型的损伤?
我刚开始使用 GNU Emacs 作为我的文本编辑器,我担心会因为不断地用小指按下控制键而感染 "Emacs Pinky" 而导致重复性劳损伤害。有哪些方法可以避免患上这种类型的损伤?
将 大写锁定 键作为另一个控制键是一个不错的起点。投资一个符合人体工程学的键盘。一些emacs用户甚至会使用脚踏板来进行控制和meta操作...
配置使得空格键在按下时既可以作为空格,也可以作为控制键;当仅按下 space 时,作为空格;当和其他键一起按下时,作为 ctrl。因此,Space+x 被视为 Ctrl+x。
在Windows中,您可以使用AutoHotKey,在Linux的Xorg中,您可以使用"at-home-modifier"(只适用于X)。在Mac中,您可以使用Karabiner(以前称为keyremap4macbook)。(事实上我是at-home-modifier的作者。=)
如果您有一个像日文键盘上那样拥有许多围绕空格键的按键的键盘,则可以做更多的事情:Japanese keyboard http://www.owltech.co.jp/products/keyboard/KB86STD/KB86STD_B-320.jpg
我的底部行基本上是EscBSSpaceEnterTab,但当用作修饰键时,它变成了AltShiftCtrlShiftAlt。(例如,如果您首先按住Esc,然后再按下Space,则为Alt+Space,但如果是先按Space,然后是Esc,则为ctrl+Esc。如果您按下Space、Esc和x,那么就是ctrl+alt+x。)所有的键都可以用拇指按下。您可以从亚马逊(amazon.com)订购一个日语键盘。您不必会说日语。
这非常方便。例如对于火狐浏览器(抱歉,不是emacs),将焦点放在链接上,按下Ctrl+Enter;然后它将在新选项卡中打开。(同时按下Shift,它将切换到新选项卡,而不是停留在当前选项卡。)
(上面的图片是at-home-modifier的作者使用的。然而,制造商不再销售这个型号。)
买一个脚踏板吧!(我有一个kinesis。)买了之后,取消掉控制键和大写锁定键的映射,这样你就会强迫自己使用脚。
(顺便说一下,重新映射大写锁定键会有所帮助,但是在一天内进行足够多的emacs操作后,这并不是完全解决方案。)
求求你了——换一个文本编辑器吧!如果需要用脚踏板才能正常使用,那么...好吧...老实说,我无话可说。现在有很多强大的当代文本编辑器,它们不需要你记住一堆奇怪的按键组合或购买昂贵的硬件。
你知道吗,我可以理解并接受很多事情,但是对于一个普通的文本编辑器需要脚踏板这一点,真的让我难以接受。
我一直很好奇为什么程序员、作家、极客等这样一个庞大的社区还没有找到超级简单和有效的解决方案来解决这个问题。简单地说:
如此小的问题引起了这么多讨论。
重新映射 左 Ctrl 和 Caps Lock,使它们在应该的位置上:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,1d,00,1d,00,3a,00,00,00,00,00
我使用优秀的key-chord mode来进行常规操作。您可以为其提供要调用的函数或键序列。
为了确保我不会过分阻碍正常打字,我生成了字母统计信息以找到好的按键和弦。我将它们记录在一起,与我的默认和弦一起。
除了更方便的命令调用外,我还有一些和弦用于插入一些内容,例如
Best wishes,
Arne
我不喜欢写没有☺表情的电子邮件。
另外,我在像拼写检查之类需要一直按住control键的时候使用控制锁定模式。这是真正的Emacs快捷键下的模态编辑。
我经常使用的和弦是:
; buffer actions
(key-chord-define-global "vg" 'eval-region)
(key-chord-define-global "vb" 'eval-buffer)
(key-chord-define-global "cy" 'yank-pop)
(key-chord-define-global "cg" "\C-c\C-c")
(key-chord-define-global "äü" 'control-lock-toggle)
; frame actions
(key-chord-define-global "xo" 'other-window);
(key-chord-define-global "x1" 'delete-other-windows)
(key-chord-define-global "x0" 'delete-window)
(defun kill-this-buffer-if-not-modified ()
(interactive)
; taken from menu-bar.el
(if (menu-bar-non-minibuffer-window-p)
(kill-buffer-if-not-modified (current-buffer))
(abort-recursive-edit)))
(key-chord-define-global "xk" 'kill-this-buffer-if-not-modified)
; file actions
(key-chord-define-global "bf" 'ido-switch-buffer)
(key-chord-define-global "cf" 'ido-find-file)
(key-chord-define-global "zs" "\C-x\C-s")
(key-chord-define-global "vc" 'vc-next-action)
首先,对我来说,问题必须被定义:什么是问题?问题是默认过度依赖CTRL键,事实上,大多数键盘上的CTRL键位置通常很糟糕,而且大多数键盘(我估计超过99.9%的所有生产的键盘)都是垃圾。
那么,我的解决方案是什么?
我使用一款优秀的机械键盘并采用触摸打字方式。那些真正重视此事的人可能会花费大量资金购买非常好的分离式和矩阵式键盘(如Kinesis Advantage)......因为从人体工程学角度来看,只有分离式和矩阵式键盘才是有意义的选择(这甚至不容置疑)。可惜的是,我已经打字三十年了,无法适应矩阵布局,所以我现在使用一个旧的(有缺陷的)错列式键盘。如果你要使用错列式键盘,请至少选择一个拥有良好开关的键盘(例如IBM Model M中的扣动弹簧,Cherry MX开关或Happy Hacking Keyboard Pro中的Topres)。如果你希望找到一款分离式+“机械”错列式键盘,如Cherry MX-5000 (*)或IBM M15,则需要准备支付500美元或更多的费用。简而言之,如果你真的很在意这个问题,请选择Kinesis Advantage(它们使用Cherry MX开关,如果我没记错的话,你甚至可以选择自己喜欢的开关)。
如果你和我一样,因为它们“太不同”而无法适应这些精美的键盘,那么就选择一款好的“机械”键盘。任何允许在打字时不要“底部出现”按键的键盘都可以保护你的手指关节。在编程数十年后有所帮助。