“Emacs Pinky”::包含电池的解决方案?

时间:2012-07-09 19:15:45

标签: emacs elisp

我开始接受RSI,当我读到这篇文章时,我正在浏览解决方案:

What is the best way to avoid getting "Emacs Pinky"?

我喜欢将空格键映射为空格和控制的解决方案,但问题出在这里:

我经常四处旅行,无法访问一台电脑。我在几个不同的计算机上编辑我的文档,我没有root访问权限(哎呀,我甚至没有正常访问权限)。

是否有电池包含实施空格键解决方案的方法? 一个小的lisp代码可能?

8 个答案:

答案 0 :(得分:6)

(这对评论来说太长了,但它可能有所帮助)

空格键解决方案看起来很有趣,虽然乍一看对我来说有点过于“hackish”但我可能会尝试一下......

无论如何,我会说“Emacs小指”问题是由默认的Emacs快捷方式引起的,这些快捷方式必须是有史以来为程序设想的最痛苦和RSI的快捷方式之一(这来自一个大的Emacs粉丝所以不要把它视为Emacs的批评。)

有太多需要使用小指的默认快捷方式:CTRL-p上一行)会浮现在脑海中。这是你的两个小指,它应该是如此聪明,因为'p'代表'之前'。所有C-x somethingC-c something都需要太多的手指伸展,我发现M-x也是一个非常有用的捷径......

我知道这可能是异端,但很多人都乐意使用Emacs进行vim式导航,老实说,我不能责怪他们。

就我个人而言,我喜欢这样一个事实:在Emacs下,一切都是可配置的,所以我想出了一个个性化的配置,试图:

  • 尽量减少手/手指和小指运动
  • 最大限度地利用“强手指”
  • 最大限度地使用手指所在的键((a)QWERTY键盘上的sdf和jkl(;),但'a'和';'表示使用小指

我并不反对在一段时间内使用小指:但对我而言,重复使用太多小指的方式可能会伤害你的双手。

因此,作为示例,我使用:

而不是使用CTRL-{p,n,f,b}来移动
  • ALT-{i,j,k,l}(将手移到箭头键是一个很大的禁忌)。

  • ACE-跳跃模式

如果你从未使用ace-jump-mode,你可能想要使用它。这是Emacs最大的节省时间之一。我已将 ace-jump-char-mode 绑定到M-e,这意味着我可以在四到五次击键中找到我在缓冲区中看到的任何字符(包括需要的两个打我)。这可以在任何一天使用CTRL-{p,n,f,b},但绝对有助于保存你的小指。

有人可能会喜欢并修改 ace-jump-mode 以便执行实际跳转(最后一次击键)而无需点击需要小指的按键:查看它看起来的来源很容易(但在某些情况下你需要使用一个额外的击键:在任何情况下,这仍然比手动导航快得多)。

这是一个两分钟的演示,关于如何使用 ace-jump-mode 快速跳转(但即使那个伟大的视频也没有做到这种模式正义:你真的必须用它来意识到它有多棒):

“Emacs rock!第10集:跳来跳去”:

http://emacsrocks.com/e10.html

然后除了C-xM-x之外,我还添加了C-,M-,作为C-xM-x

例如:

(define-key global-map [(control ,)] ctl-x-map)

我会说,无论您是否找到将SPC用作CTRL的便携方式,您想要查看C-{p,n,f,b}和{{1}的替代方法}('x',即使它不需要小指,也不是很方便恕我直言。)

TL;博士

要保存小指,您可以:

  • 打开一些即用型vim风格模式

  • 或花费时间(重新)完全根据自己的喜好配置你的Emacs,以便它不会破坏你的小指(这可能意味着,但不限于,如果你发现使用SPC作为CTRL一种可移植的方式)

除此之外,您可能还想使用emacs模式(例如 ace-jump-mode )来保存许多击键。

答案 1 :(得分:2)

我最近发现了键和弦模式:«Key-chord允许你将命令绑定到击键组合。这里的“键和弦”意味着同时按下两个键,或者快速按下一个键两次。»

好消息是,显然可以从空格键开始定义一个键和弦。 http://www.emacswiki.org/emacs-en/KeyChord(并参见space-chord.el

这样可以解决你的问题,对吧?

答案 2 :(得分:1)

您可能会考虑ErgoMacs这应该解决这个问题。我没有尝试过,因为在我发现它之前,我已经使用了Emacs五年了。我确实有大量的键盘自定义,包括C,M-i,j,k,l运动(不完全是vi风格)。

答案 3 :(得分:1)

即使使用Kinesis Advantage键盘,这有助于吨,经过多年的ctrl-n,ctrl-p等,我仍然受到手腕和拇指问题的困扰。所以我正在探索vim,并遇到了邪恶的包裹对于emacs。这很棒。一旦你学习了vim绑定并习惯了逃避,非模态编辑(使用ctrl-meta绑定的疯狂组合),从人机工程学的角度来看似乎绝对是疯了。

所以我绝对推荐任何emacs小指或拇指患者尝试邪恶模式并学习vim绑定。

答案 4 :(得分:0)

这可能听起来像是黑客,但我的建议是从默认的Emacs键盘映射切换到其中一个vi仿真器。我使用的是Viper,我相信它是一个标准包。我认为您可以按需启用它:

(需要'viper) M-x毒蛇模式

这是我能够使用emacs的唯一方法,因为我总是发现它的基本键盘映射几乎是不可理解的。

唯一的缺点是,如果你还没有熟悉vi,可能需要的学习曲线是,你可以用'escape-key-finger'取代'emacs pinky'

答案 5 :(得分:0)

部分是,是的。

类似的实用程序完全在用户空间中运行,即Space2CtrlKeydouble。两者都需要X。

我是at-home-modifier的作者,“将空间用作ctrl”软件。当我比较这三个here时,Space2Ctrl和Keydouble的选项比at-home-modifier更少,所以可能不是“包含电池”,但代码(C ++ / C)很简单,并且它可能很容易被破解。

要好好照顾。 (我写了我的,因为我的小指开始疼痛,但现在好了。但是不要过度使用拇指。)at-home-modifier的README也提供了更多关于健康和键盘的建议。

答案 6 :(得分:0)

重新录制你的numpad.AHK脚本,

NumpadIns::^s
NumpadEnd::^c
NumpadDown::^v
NumpadPgDn::^x
NumpadLeft::^+v
NumpadClear::Control
NumpadRight::^a
NumpadHome::q
NumpadUp::Tab
NumpadDel::^f
NumpadEnter::Space


1:复制
2:粘贴
0:保存



购买新的小键盘以方便使用。

答案 7 :(得分:0)

使用emacs近十年后,我认为避免emacs小指的最好方法是记住:

绑定键,这样您就不会再用一只手同时按下两个或多个键!

这完全消除了我以前遇到的任何手部问题。

例如,应始终按下C-x:C(右手)-x(左手)

使用空格或键锁来代替控制会延迟但不能完全防止手部问题。防止它们出现的唯一方法是永远不要用一只手同时按下两个键。