我希望这不会仅仅是为了这样做而引发对话的尝试。
我使用vim很多(每天5-10个小时),我注意到我的左手腕是第一个开始疼痛的人。标准键盘布局(见下图)几乎可以保证为您提供关节炎。
目前,我已重新映射
帮助使用常用命令,例如 Ctrl f 或 Shift 2 ( @ ),但我还是要扭动我的手腕以获得这些组合。反正重新按键是为了避免左手腕扭曲(也许使用 Tab 键)?我发现奇怪的是,对于专门为程序员设计的文本编辑器,它会大量使用这些密钥。我已经考虑重新映射到旧的键盘布局(见下图),但我不想知道它是否会与我当前的重映射具有相同的基本问题。
答案 0 :(得分:14)
根据我的经验,只需将 Caps 映射到 Ctrl (或者如果你必须拥有 Caps >)并使用 Ctrl + [而不是 Esc 产生很大的不同。 Ctrl + [在vim中不需要额外的映射,因为它等同于 Esc 。如果你可以自学这个小小的改变,那么当你考虑在vim中使用 Esc 的频率时,你会大大减少你的动作。
Caps 到 Ctrl 映射无法在vim内部完成,必须在系统范围内进行,但是, Ctrl 在更方便的位置也将有助于其他使用 Ctrl 组合的应用程序。根据您使用的操作系统,有不同的重新映射键的方法。一些常见的选择是:
虽然这可能会改善您的情况,但如果您的疼痛持续存在,您应该考虑去看医生和/或购买更符合人体工程学设计的键盘。我拥有我在Ebay上使用的Kinesis Advantage的旧版本,大约100美元(美元),我感到非常高兴。这些按键可以直接在键盘上编程,因此不需要软件来交换按键或为常用的击键创建自己的键盘宏。
编辑:我在帖子中看到你还提到的组合如 Ctrl + f 和 Shift + 2 要求你扭动手腕按压。听起来像你只使用键盘左侧的 Ctrl 和 Shift 键。您应该使用这两个键集,使用与您正在修改的键相反的任何一个键。这会否定这种手腕运动。
答案 1 :(得分:6)
在系统范围内使用 caps 作为 ctrl 。 (你多久剪一次/复制/粘贴?)
这也使 ctrl [在vim中工作。
我使用vim'arpeggio'插件。
琶音可让您定义在同时按下两个琴键时激活的vim绑定。
按下的 j k 将我当作 ESC 。
“ surround.vim ”插件也可能对你有用。
消除了我所有的手腕疼痛。
post scriptum:
使用' vundle '!
到目前为止它是最好的vim插件管理器,你会想知道如何在没有它的情况下,特别是如果你在几台机器上使用自定义的vim。如果您在最初设置时遇到问题,请不要害怕,请慢慢来。
答案 2 :(得分:4)
我切换到Kinesis Advantage keyboard,并将Caps Lock重新映射到Esc。这有效地消除了我作为vim用户感觉到的任何手腕疼痛。再次不是医生,但看着我的手如何移动,即使我按住Shift,我也看不到我的手腕扭曲。
您可以对拇指键进行一些很好的重映射,以进一步减少紧张,但说实话,我从未感到需要。
不是0美元的解决方案,我很害怕,但这对我来说非常有效。
答案 3 :(得分:3)
我将Escape(单击)和Ctrl(hold)映射到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来输入ūmlautsetc。
在vim中,我所做过的最有用的改变是将空间映射到领导者。各种领导 - 组合组合将使您的生活更轻松。
对于_和$,我无法使用H和L,因为它似乎不适用于surround.vim以及人们建议的其他一些技巧。
只是不要使用箭头!
答案 4 :(得分:2)
如果可以的话,我会让这部分评论兰迪对 Esc 的答案,但它需要更多的空间。有一个重要的用例,您不能只重新映射Windows密钥:没有管理员权限的Windows 7。它在企业环境中很常见;至少,它描述了我和照片中的键盘。 keymapper's repo在这个问题上提供了不错的信息:
Windows 7用户的重要提示
Windows 7不支持每用户键映射。在Key Mapper的下一个版本之前,您必须从Mappings菜单手动切换到'Boot'映射,重新启动以更改映射,并且您需要具有对计算机的管理访问权限才能设置可在Windows中运行的键映射7。
任何Microsoft工具,KeyTweak,SharpKey等都是如此。
所以你必须使用像AutoHotkey这样的东西。我个人更喜欢将Caps Lock直接映射到Esc for Vim,我遇到的问题只是将它映射到Ctrl:
#IfWinActive ahk_class Vim
*CapsLock::Esc
#IfWinActive
我喜欢的另一种选择是inoremap jj <Esc>
。除非你打算写关于朝觐或其他东西,否则它的效果非常好。
在任何情况下,您是否考虑过以上操作以便轻松转义,然后将一些难以到达的插入模式命令重新映射到 Alt (用拇指命中)然后使用映射对你的领导?
let mapleader=","
nnoremap <leader>f <C-F>
答案 5 :(得分:1)
我建议重新映射
。如果在Linux中首先可以使用setxkbmap -option '...,ctrl:nocaps'
或更改XkbOptions
中的/etc/X11/xorg.conf
来完成。其次要求使用xmodmap
。在一些X服务器更新之后,我没有得到第三个工作,之前也使用了xmodmap
。
使用专为触摸打字和,s
- > ()<Left>
等映射进行优化的dvorak布局(甚至是编程)也可能有所帮助。
注意:我也不是医生。我是触摸打字员,但与@Randy Morris不同,我从未遭受过手腕疼痛,只是将钥匙移动到最方便的位置。
答案 6 :(得分:1)
我总是按下左侧的ctrl键,卷起我的小指并用第一个指关节按下。我发现这需要较少的手部动作。
<强>更新强>
我发现Shift
不舒服,所以我无法帮助你
那。但是Ctrl
确实困扰我,甚至和我一样
指关节技术我宁愿尽可能避免它。因此对于
插入模式(和命令行模式)我使用前导;
而不是Ctrl
。 E.g。
:map! ;w <C-W>
:map! ;a <C-A>
:map! ;r <C-R>
:ino ;t <C-T>
:ino ;d <C-D>
你明白了。
在正常模式下,我使用v
和V
代替Ctrl+F
和
Ctrl+B
(我只使用视觉块方式)
我想大多数人都喜欢映射不同的键,
例如<Space>
和-
用于分页(-
并非如此
需要)。您可以使用F
向前搜索,而不是f
,
然后点击,
。
我从未真正在Ctrl+D
或Ctrl+U
看到过多少观点。
但我确实发现z.
,z<Enter>
和z-
对您有用
用光标滚动线到中间,顶部和
窗户底部分别。 H
,M
和L
也是。/
用于在屏幕上移动光标。但在
一般我更喜欢使用{{1}}并设置'incsearch'
导航。
没有正确或错误的方法,这些只是我的个人喜好,但我希望它给你一个或 两个想法。尝试尝试,看看哪些对您有用。
答案 7 :(得分: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