Colemak键盘与Emacs或VIM

28

我一直在我的待办清单上划掉任务。最近我开始学习Colemak, 接下来我想学习Vim或Emacs。我倾向于学习Vim,但它的一个好处是可以固定在主键区,而随着使用Colemak,主键位置已经改变了。我意识到我可以重新映射键,但把功能分配给不同的字母对我来说并不非常吸引人(如果字母和它们的功能有任何关联的话,我知道移动没有相关性,但其他方面我不确定)。

我不想发表关于文本编辑器的争议性帖子,而是想听听Colemak(或Dvorak)用户对这两个编辑器的替代键位的看法。

谢谢


1
据我所知,Qwerty、Dvorak和Colemak是真正重要的键盘布局。 - Sergio Acosta
@Tim:我读过Colemak具有与Dvorak相同的人体工学支持,但还包括更容易的复制/粘贴等快捷键。它也有更广泛的追随者和实施。 - Chetan
一些Vim用户可能想看看这个插件:https://github.com/jooize/vim-colemak。适用于Vim的Colemak键映射! - MortezaE
我是一个长期使用vim的用户,我觉得hjkl有点像拐杖。有比单个字符移动更好的方法来利用vim的力量。我希望我即将切换到colemak会打破我的hjkl依赖。 - MatrixManAtYrService
扩展对@warren的回答,现在还有Workman。在阅读了Workman网站上的比较后,我决定选择Colemak,但也许回想起来,即使Colemak有更多的支持,如我不太喜欢的vim绑定,Workman可能会更好。 - andho
显示剩余6条评论
8个回答

14

我正在使用与Graham类似的设置(上、下、左、右键分别对应 Qwerty 键盘的 hkjl),但我在我的 .vimrc 文件中使用 langmap 进行重映射,而不是使用 noremap:

set langmap=hk,jh,kj

这样做的优点是可以改变使用这些移动键的其他命令(例如 g、z 和 C-w),而无需手动重新定义所有这些命令,即 C-wh 上移窗口,C-wk 下移窗口等。


太棒了,谢谢!只是用 Colemak 默认的移动键映射方式还是无法习惯,因为上下感觉颠倒了! - Adam DiCarlo
优雅的重新映射方式。然而,我已经被@asgeo1的答案所说服,完全不需要重新映射。现在,在Colemak上使用标记有“y”、“n”、“u”和“h”的键来进行向下/向上/向右/向左的操作(对应字母j、k、l、h),无需为每个SSH服务器重新配置Vim,这种方式感觉很自然。 - Graham
我可以看出那会有什么优势,目前每当我 ssh 时都必须记住要调整回默认的方式。这感觉就像在飞行模拟器中飞行 - 向前推去降低高度,向后拉则上升! - c_oreills
2
我刚刚发现这实际上可能会微妙地破坏vim插件(在paredit.vim中注意到),它们在函数中使用j/k/h进行移动,所以我将尝试调整回“飞行模拟器”模式,而不是完全重新映射。 - c_oreills

11

我最近切换到了 Colemak 键盘布局,并将 Vim 作为我的主要编辑器。

我可以告诉你,没有必要重新映射移动键 - 或者 Vim 的任何其他键。您的大脑会很快学会移动键的新位置。对于助记键,绝对不需要重新映射 - 您希望保留键背后的助记含义。

如果您重新映射 Vim 移动键,则会陷入不幸的境地,无法以任何真正的效率操作基本的 Vim - 例如,如果您需要 SSH 到服务器。我认为对于大多数人来说,这比使用没有 Colemak 的计算机要常见得多。

此外,您可能会遇到与您的重新映射冲突的 Vim 插件,或者有一天您将读到关于 Vim 的提示,而由于您已经重新映射了某些内容,现在无法使用该功能。

这会让您感到非常麻烦,所以我不建议进行任何重新映射。


2
你说得很对。不幸的是,我已经重新映射了按键绑定,而且我经常遇到所有这些问题。这真的很令人沮丧。 - Mert Nuhoglu
你关于重新映射不具备可移植性的说法可能是正确的。但如果在vim中最常用的键是对角线移动,那么这会对手部造成压力,对吧?使用hjkl(而非箭头键)的整个(非历史)目的在于它比箭头键更容易到达。 - andho
1
@andho - 这对手部并不会造成很大的压力。右手食指负责所有4个键(hjkl)。这个手指是最强壮和最有能力向上或向下伸展的。自从我写了这个答案以来,我已经使用Colemak的Vim 12年了,并且没有关于hjkl的任何手部压力问题。大多数情况下最好使用其他导航方式,例如ft等。其他Unix程序,如less也使用j/k向上和向下滚动 - 最好保持一致性。在我看来,重新映射键位并不是一个好主意。 - asgeo1

8
很高兴看到另一个Colemak用户 :)
对于Emacs来说,真的没有必要重新映射键位,因为最初的“快捷方式”并不是设计成彼此靠近的。如果有什么区别的话,你在Colemak上使用Emacs会比在Qwerty上更加舒适(至少我是这样认为的)。
在Vim中,情况要棘手得多,因为hjkl将完全混乱。不过,我一直觉得hlkl很糟糕,应该改为jkj;或ijkl,所以重新映射可能是件好事。在Colemak论坛上有关于Colemak+Vim的更广泛讨论: http://forum.colemak.com/viewtopic.php?id=50

我同意HJKL的观点。NEIO是正确的选择 :) - Zequez
我为evil-mode(emacs中的vim)制作了hnei风格的导航,并将其打包发布在https://github.com/wbolster/evil-colemak-basics上。 - wouter bolsterlee

7

在你的 .vimrc 文件中添加以下内容可以改变 Colemak 键盘的光标移动方式,而不会影响其他 vim 映射,因为它只影响 h/j/k 字母。

  • 向上 = h(键盘上标记为“h”)
  • 向下 = k(键盘上标记为“n”)
  • 向左 = j(键盘上标记为“y”)
  • 向右 = l(键盘上标记为“u”)

以下是映射:

noremap h k
noremap j h
noremap k j

我非常喜欢这个解决方案。不过,我希望它默认情况下能更好一些。我经常与使用dvorak/qwerty的用户进行配对编程,因此我需要一种切换开关来使其实用。 - Bo Jeanes
1
@bjeanes,你可以使用键盘快捷键来交换键盘快捷键,例如: nnoremap <F1> <Esc>:nnoremap h k<CR>:noremap j h<CR>:noremap k j<CR> <br /> nnoremap <F2> <Esc>:nnoremap h h<CR>:noremap j j<CR>:noremap k k<CR> <br /> 将其添加到你的~/.vimrc中,然后F1/F2将在qwerty/colemak移动键之间进行切换。如果你是指交换键盘布局,而不仅仅是Vim映射,那么也应该有一个(依赖于操作系统)的解决方案;-) - jabirali

4

我已经使用Dvorak键盘布局运行了一些年了(大概 ~4 年)。我也使用vim,原因是像其他人一样必须使用vim,如less、配置编辑器(visudo等)。Emacs实际上是我学习的第一个Unix程序(我是苹果世界的原住民),并且在被Yegge的胡言乱语抨击了多么令人惊叹之后,我目前重新开始使用它。

从严格的键盘布局角度来看,我认为Emacs可能是赢家,因为不需要重新映射。除了将Caps-Lock键与Control键交换位置(这确实应该做到,Caps-Lock键就像每个键盘的高中吻痕一样),我会说与Qwerty相比,每个键绑定都更舒适使用Dvorak。我特别发现经常使用的C-x和M-x绑定非常舒适易打。

然而,vim真的没什么大不了的。'j'和'k'仍然紧挨在一起。'h'和'l'至少方便地位于一只手上并且在主键盘区域上方。除此之外,它只是关于在你的头脑中重新映射按键以执行你想要的编辑器操作。我个人不认为有任何理由重新映射任何内容,而且我很容易患上RSI(因此转向Dvorak)。对于像vim和emacs这样的键盘中心应用程序,我可以舒适地使用它们而不需要改变键位,这应该是相当令人印象深刻的。:)

祝好运!


3

我正在使用Ryan Heise的Vim解决方案:

我想出了“NEST”导航绑定,它保留了上/下导航键的物理位置(左/右不同但仍在主键盘行):

N = 向下 E = 向上 S = 向左 T = 向右

设置这个的命令在我的Colemak页面底部:

http://www.ryanheise.com/colemak/

大多数情况下,这些绑定允许您使用常规的vim命令表来学习命令,当然除了导航。

在N-E-S-T中分配的4个键中,“N”(“n”ext搜索结果)和“E”(移动当前单词的“e”nd)是频繁但却被吞噬的。我将它们重新映射回它们原来的QWERTY位置,所以它们是唯一没有原始逻辑名称的两个命令。

取自https://forum.colemak.com/topic/50-colemak-vim/p2/#p2514


2
我是一个vim+qwerty用户(我曾尝试学习dvorak,但发现打字速度不是我的瓶颈,而且我没有RSI问题)。只有vi(m)中的hjkl光标移动键是位置相关的,其他所有内容都是助记符。在Colemak布局中,我看到h/l模糊地表示左/右,但j/k表示下/上。尽管如此,我不认为这会成为一个重大障碍。你可以使用箭头键,或继续使用hjkl并处理有趣的位置。
我不倾向于根据键盘布局重新映射vim功能。对我来说,这似乎会带来太多潜在的混乱。

1

这里有一篇之前的帖子,应该会对你有所帮助。那里有一些讨论,一些用户不重新映射。有些则会。

实际上,我打算在周末重新映射。过去一年来,我一直使用默认映射和Dvorak。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接