【问题标题】:"Emacs Pinky" :: Batteries Included Solution?"Emacs Pinky" :: 包含电池的解决方案?
【发布时间】:2012-07-09 19:15:44
【问题描述】:

我开始获得 RSI,并且在阅读本文时正在四处寻找解决方案:

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

我喜欢将空格键映射为空间和控件的解决方案,但问题是:

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

是否有包含电池的方式来实施空格键解决方案? 也许是一个小的 lisp 代码?

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

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

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

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

    有太多需要使用小指的默认快捷方式:CTRL-p (previous-line) 浮现在脑海。这对你来说是两个小指,它应该很聪明,因为'p'代表'previous'。所有C-x somethingC-c something 都需要太多的手指伸展,我发现M-x 也是一个非常无效的快捷方式......

    我知道这可能是异端,但相当一部分人乐于使用带有 vim 风格导航的 Emacs,老实说,我不能责怪他们。

    我个人喜欢在 Emacs 下一切都是可配置的这一事实,因此我想出了一个个性化的配置,它试图:

    • 尽量减少手/手指和小指的动作
    • 最大限度地利用“强壮的手指”
    • 最大限度地使用手指已经位于的键(QWERTY 键盘上的 (a)sdf 和 jkl(;),但“a”和“;”表示使用小指

    我不反对偶尔使用小指:但对我来说,重复使用太多小指可能会伤害你的手。

    因此,例如,我不使用CTRL-{p,n,f,b} 来移动,而是使用:

    • ALT-{i,j,k,l}(将手移到箭头键是一个很大的禁忌)。

    • 王牌跳跃模式

    如果您从未使用过ace-jump-mode,您可能想使用它。这是 Emacs 最大的节省时间的方法之一。我已经将 ace-jump-char-mode 绑定到 M-e,这意味着我可以在四到五次击键(包括击中 M-e 所需的两次)。这比使用CTRL-{p,n,f,b} 任何一天都要好,绝对有助于拯救你的小指。

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

    这里有一个两分钟的演示,介绍如何使用 ace-jump-mode 快速跳跃(但即使是那个很棒的视频也不能做到这种模式正义:你真的必须用它来意识到它有多棒):

    “Emacs 震撼!第 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}C-x / M-x 的替代品('x ',即使它不需要小指,恕我直言也不是很方便)。

    tl;博士

    要保存您的小指,您可以:

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

    • 或者花时间根据自己的喜好(重新)配置您的 Emacs,以便它停止破坏您的小指(这可能暗示但不限于,如果您发现使用 SPC 作为 CTRL一种可移植的方式)

    除此之外,您可能还想使用 emacs 模式(如 ace-jump-mode)以节省许多击键。

    【讨论】:

    • 只是要清楚 ace-jump-mode:当您在光标所在的行上导航时,iy-go-to-char 应该更快(你应该同时使用)。使用 ace-jump-mode 您需要一个微小的“暂停”来读取要按哪个键去您想去的地方:但在很多情况下它仍然胜过手动导航......
    • jump-char 是 iy-go-to-char,具有即时突出显示并与 ace-jump 集成。
    • @event_jr: : ) 非常感谢 :)
    【解决方案2】:

    我最近发现了 key-chord 模式:«Key-chord 让您可以将命令绑定到击键组合。这里的“键和弦”是指同时按下两个键,或者一个键快速按下两次。»

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

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

    【讨论】:

    • 我在我的(很长的)评论中犹豫是否提到 key-chord。这很好,但要正确使用有点棘手:基本上很难找到足够的键组合,既易于键入又不会与您可能想要编写的内容发生冲突。当您是一个快速打字员时,这尤其成问题,因为无论您如何降低键和弦延迟,有时您仍会在您不想触发时触发它。但是,是的,这是一段很酷的代码,它肯定能帮上大忙。顺便说一句,任何链接/文章都将受到欢迎:)
    • 是的,我认为这是真的,因为我已经使用了几天。但是我找到了 3 个很好的键,这足以绑定到保存缓冲区和切换缓冲区,这就是小指节省! (我使用键 ' 后跟另一个 ' 和 '« 和 '» ,因为我使用的是名为 bépo 的法语版本的 dvorak。)
    • 有很多基于强手指(中指、指点、拇指)的罕见2字符组合。我使用 9X3X 组合,其中 '9' 和 '3' 只是因为它们导致组合极为罕见,而第二个字符则出于助记符的原因,例如“9f " = 查找文件,"3j" = ace-jump 等等。它变得非常高效,我从来没有意外触发过。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      即使有一个有助于吨的 Kinesis Advantage 键盘,经过多年的 ctrl-n、ctrl-p 等操作,我仍然患有手腕和拇指问题。所以我在探索 vim,并遇到了邪恶的包对于 emacs。这很棒。一旦您学习了 vim 绑定并习惯了点击转义,非模态编辑(使用 ctrl-meta 绑定的疯狂组合)从人体工程学的角度来看绝对是疯狂的。

      所以我绝对推荐任何 emacs 小指或拇指患者尝试 evil-mode 并学习 vim 绑定。

      【讨论】:

        【解决方案5】:

        这听起来像是一个 hack,但我的建议是从默认的 Emacs 键盘映射切换到 vi 模拟器之一。我使用 Viper,我认为这是一个标准包。我认为您可以通过以下方式按需启用它:

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

        这是我能够使用 emacs 的唯一方法,因为我一直发现它的基本键盘映射非常难以理解。

        如果您尚未熟悉 vi,除了可能需要的学习曲线之外,唯一的缺点是您可以将 'emacs pinky' 替换为 'escape-key-finger'

        【讨论】:

          【解决方案6】:

          重新调整您的 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】:

            部分,是的。

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

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

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

            【讨论】:

              【解决方案8】:

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

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

              这完全消除了我以前的手部问题。

              例如,C-x 应该总是这样按下:C (右手) - x(左手)

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

              【讨论】:

                猜你喜欢
                • 2011-12-01
                • 1970-01-01
                • 2020-12-01
                • 1970-01-01
                • 2016-10-29
                • 2016-05-15
                • 1970-01-01
                • 2018-10-17
                • 1970-01-01
                相关资源
                最近更新 更多