20

我希望这不会被视为纯粹为了这样做而试图引发对话。

我经常使用 vim(每天 5-10 小时),我注意到我的左手腕首先开始疼痛。标准键盘布局(见下图)几乎肯定会给你带来关节炎。

标准键盘

目前,我已经重新映射

  • CtrlShift
  • ShiftCaps Lock
  • Caps LockCtrl

有助于使用诸如CtrlfShift2( @) 之类的常用命令,但我仍然需要扭动手腕才能获得这些组合。无论如何要重新映射键以避免左手腕上的这种扭曲(也许使用Tab键)?我只是觉得奇怪的是,对于专门为程序员设计的文本编辑器,它会大量使用这些不碍事的键。我考虑过重新映射到旧的键盘布局(见下图),但我不想知道它是否会出现与我当前的重新映射相同的基本问题。

旧键盘布局

4

8 回答 8

15

注意:我不是医生,只是另一个手腕疼痛的打字员。


根据我的经验,只需映射Caps到(或者如果你必须有 aCtrl则交换两者)并使用+而不是有很大的不同。 +在 vi​​m 中不需要额外的映射,因为它等同于. 如果你能自学这个小改变,那么当你考虑在 vim 中使用的频率时,你的动作就会大大减少。CapsCtrl[EscCtrl[EscEsc

CapstoCtrl映射不能在 vim 中完成,必须在系统范围内进行,但是,在Ctrl更方便的位置也有助于其他使用Ctrl组合的应用程序。根据您使用的操作系统,有不同的重新映射密钥的方法。一些常见的选项是:

虽然这可能会改善您的情况,但如果您的疼痛持续存在,您确实应该考虑去看医生和/或购买更符合人体工程学设计的键盘。我拥有一个旧版本的Kinesis Advantage,我在 Ebay 上以大约 100 美元(美元)的价格购买了它,我非常高兴。可以直接在键盘上对按键进行编程,因此无需软件来交换按键或为经常使用的按键创建自己的键盘宏。


编辑:我在您的帖子中看到您还提到了Ctrl+fShift+之类的组合,2需要您扭动手腕才能按下。在我看来,您只使用键盘左侧的Ctrl和键。Shift你真的应该使用这两组键,使用你正在修改的键的另一侧。那将否定这种手腕运动。

于 2012-07-12T01:04:59.100 回答
6

caps在系统范围内使用ctrl。(你多久剪切/复制/粘贴一次?)

这也使得ctrl[在 vim 中工作。

除了我使用 vim 'arpeggio' 插件。

Arpeggio允许您定义同时按下两个键时激活的 vim 绑定。
jk按下为我服务ESC

' surround.vim ' 插件可能对你来说很有趣。

消除了我所有的手腕疼痛。

后脚本:
使用' vundle '!
它是迄今为止最好的 vim 插件管理器,你会想知道你怎么能没有,特别是如果你在多台机器上使用定制的 vim。如果您最初设置时遇到困难,请不要害怕,慢慢来。

于 2013-01-06T22:35:41.810 回答
4

我切换到Kinesis Advantage 键盘,并将 Caps Lock 重新映射为 Esc。这有效地消除了我作为 vim 用户所感受到的任何手腕疼痛。再一次不是医生,但看看我的手是如何移动的,即使我按下 Shift 键,我也没有看到我的手腕扭曲。

您可能可以对拇指键进行一些很好的重新映射,以进一步减少紧张感,但说实话,我从来没有觉得有必要。

恐怕不是 0 美元的解决方案,但它对我来说非常有效。

于 2012-07-12T05:51:37.790 回答
3

我将 Escape(单击)和 Ctrl(按住)都映射到 CapsLock:

xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "remove Control = Control_L"
xmodmap -e "keysym Control_L = Caps_Lock"
xmodmap -e "keysym Caps_Lock = Control_L"
xmodmap -e "add Control = Control_L"
xcape -t 1000 -e "Control_L=Escape" # Fire nothing if 1000ms hold time out

可能我在这里搞砸了,但xmodmap无论如何都不是修改映射的最佳选择,所以我将其更改为纯 xkb 配置。

我也交换了 : 与 ; 和 ` 和 ~,因为我更经常使用 : 和 ~:

xmodmap -e "keycode 47 = colon semicolon"
xmodmap -e "keycode 49 = asciitilde grave"

我还使用Compose Key来输入 ūmlauts 等。

在 vim 中,我做过的最有用的改变是空间到领导者的映射。各种领导键组合将使您的生活更轻松。

我无法习惯使用 H 和 L 来表示 _ 和 $,因为它似乎不适用于 round.vim 和人们建议的其他一些技巧。

只是不要使用箭头!

于 2014-05-01T00:54:57.323 回答
2

如果可以的话,我会将此部分作为对 Randy 的回答的评论Esc,但这需要更多的空间。有一个重要的用例,您不能只重新映射 Windows 键:没有管理员权限的 Windows 7。这在企业环境中很常见;至少,它描述了我和图片中的那个键盘。keymapper 的 repo在这个问题上有不错的信息:

Windows 7 用户的重要说明

Windows 7 不支持每用户键映射。在 Key Mapper 的下一个版本之前,您必须从 Mappings 菜单手动切换到“Boot”映射,重新启动以更改映射,并且您需要对计算机具有管理访问权限才能设置在 Windows 中工作的键映射7.

任何 Microsoft 工具、KeyTweak、SharpKey 等都是如此。

所以你必须使用像AutoHotkey这样的东西。我个人更喜欢将 Caps Lock 直接映射到 Vim 的 Esc,而我在将它映射到 Ctrl 时遇到了问题:

#IfWinActive ahk_class Vim
*CapsLock::Esc
#IfWinActive

我喜欢的另一种选择是inoremap jj <Esc>. 除非你打算写一篇关于朝觐之类的文章,否则它工作得很好。


更符合你的观点

无论如何,您是否考虑过执行上述操作以轻松转义,然后将一些难以到达的插入模式命令重新映射到Alt(用拇指敲击它),然后使用映射到您的领导者?

let mapleader=","
nnoremap <leader>f <C-F>
于 2012-07-12T05:28:16.587 回答
1

我总是通过卷起我的小指并用第一个指关节按下左 ctrl 键。我发现这需要更少的手部动作。

更新

我不觉得Shift不舒服,所以我帮不了你。然而Ctrl确实困扰着我,即使我的指关节技术我更愿意尽可能避免它。因此,对于插入模式(和命令行模式),我使用前导; 而不是Ctrl. 例如

:map! ;w <C-W>
:map! ;a <C-A>
:map! ;r <C-R>
:ino  ;t <C-T>
:ino  ;d <C-D>

你明白了。

在正常模式下,我使用vandV而不是Ctrl+Fand Ctrl+B(我只使用可视块模式),尽管我想大多数人更喜欢映射不同的键,例如<Space>-用于分页(-实际上并不需要)。而不是F你可以用 向前搜索f,然后点击,

我从来没有真正看到Ctrl+Dor的意义Ctrl+U。但是,我确实发现z.,z<Enter>z-用于将带有光标的行分别滚动到窗口的中间、顶部和底部。H,M并且L对于在屏幕上移动光标也很有用。但总的来说,我更喜欢使用/“incsearch”集进行导航。

这样做没有对错之分,这些只是我个人的喜好,但我希望它能给你一两个想法。尝试试验,看看什么对你有用。

于 2012-07-12T11:20:31.907 回答
1

我开发了一个 vim 模块来为这个问题做一些简单的重新映射:

https://github.com/vim-scripts/vim.ergonomic

它所做的最重要的事情是使键入括号集变得更容易。它还使进入命令模式(jj->ESC)变得更加容易

它的运行原理是您在编辑时几乎从未使用过 J 键,但它就在主行中……所以让我们滥用它吧!

从文档中:

Remapping commonly used commands
  key combo     mapping         purpose
  ;             :               removes the need to hit Shift to use commands
  jj            <ESC>           can exit edit mode quickly and easily
  Jj            j               can type 'j' when you need to
  JJ            J               can type 'J' when you need to


Making it easier to insert various kinds of braces:
  key combo     mapping         purpose
  JU            ()<left>        easier to create parenthesis
  JI            []<left>        easier to create square brackets
  JM            {}<left>        eaiser to create curly braces
  J<            <><left>        easier to create carrot braces


Make it easier to move small distances (especially useful with braces commands):
  key combo     mapping         purpose
  JL            <left>          move left in insert mode
  JH            <right>         move right in insert mode


Removing any need for enter, backspace or delete:
  key combo     mapping         purpose
  JB            <esc>ldbi       delete the previous word
  JW            <esc>dwi        delete the next word
  JO            <esc>oi         insert line and go to it
于 2015-03-19T15:16:07.660 回答
1

我建议重新映射

  • 大写锁定到左侧控件
  • 左控制逃脱
  • 转义为大写锁定

. 如果在 linux中首先可以通过使用setxkbmap -option '...,ctrl:nocaps'或更改XkbOptions. /etc/X11/xorg.conf其次需要使用 of xmodmap。在一些 X 服务器更新后,我未能使第三个工作正常,以前也使用xmodmap过。

使用针对触摸打字和映射优化的 dvorak 布局(甚至可能是编程),s->()<Left>也可能会有所帮助。

注意:我也不是医生。我是打字员,但与@Randy Morris 不同,我从未遭受过手腕疼痛,只是将按键移动到最方便的位置。

于 2012-07-12T03:19:56.597 回答