Vim Dvorak键位绑定(重新绑定 :)

36

虽然我以前玩过,但现在我终于开始定期使用Dvorak (Simplified)。我已经与Vim保持了几年的稳定关系,现在我正在尝试找到最好的重新映射键绑定方式,以适应我新获取的Dvorak技能。

您如何重新映射Vim的键绑定以更好地与Dvorak配合工作?

鼓励解释!

7个回答

35

我使用其中一个更为常见的建议按键绑定

Dvorak it!
no d h
no h j
no t k
no n l
no s :
no S :
no j d
no l n
no L N
Added benefits
no - $
no _ ^
no N <C-w><C-w>
no T <C-w><C-r>
no H 8<Down>
no T 8<Up>
no D <C-w><C-r>

移动键保持在相同位置。其他更改:
  • 删除“d” -> 废弃“j”
  • 下一个“n” -> 查看“l”
  • 上一个“N” -> 回顾“L”

还有一些为了熟悉性而进行的更改,“s”/“S”可用于访问命令模式(冒号的旧位置,仍然有效)。

新增的好处

  • 行末“$”-也是“-”
  • 行首“^”-也是“_”
  • 向上移动8个“T”
  • 向下移动8个“H”
  • 下一个窗口<C-w><C-w> -也是“N”
  • 交换窗口<C-w><C-r> -也是“D”

-亚当


好的,谢谢! - Pascal
谢谢留言 - 我已经重新格式化它,以便在这里正确显示。 - Adam Davis

21

我不觉得需要为Dvorak重新映射键 - 当我切换布局时,我很快就习惯了使用默认的按键绑定。

作为额外加分,这意味着当我在Dvorak和Qwerty之间切换时,我不必记住两个不同的键组合。 键盘布局的差异足以让我不期望按键在相同位置上。


10

有点晚了,但我使用以下内容:

" dvorak remap
noremap h h
noremap t j
noremap n k
noremap s l
noremap l n
noremap L N

" easy access to beginning and end of line
noremap - $
noremap _ ^

这基本上是做以下几件事:

  • 左下上右都在默认手指位置的主页行下(即不像默认的QWERTY Vim映射一样向右移动一个)
  • 使用l / L进行下一个/上一个搜索结果
  • 使用- / _到达行末/行首

这对我来说似乎有效...


1
没有迟到,一切都在于长尾。 :-) - cdleary
1
谢谢,你的重新映射很好用,我将n和N分配给j和k,因为这些键在第一次重新映射后是空闲的,并且这些键在一个良好的位置相邻,此外,这也省去了按shift键的需要。 :-) - Tamara Wijsman

9

我只是在命令模式下使用标准的qwerty布局,在插入模式下使用dvorak布局。

以下是如何设置:链接


4

我的重新绑定:

noremap h h
noremap t j
noremap n k
noremap s l
noremap j t
noremap l n
noremap k s
noremap J T
noremap L N
noremap K S
noremap T J
noremap N L
noremap S K

注意:

  • 在qwert键盘上,vi必须使用'h',因为vi不想使用非字母的';'。但是在dvroak键盘上,我们有's',所以为什么不利用这个优势呢?
  • vi使用大写字母表示相对动作。这是一种很好的设计哲学。因此我尝试遵守这个规则。

含义:

n (Next) -> l (Left) -- "What's left?" resembles "What's next?"
s (Substitute) -> k (Kill then insert)
t (jump Till) -> j (Jump till)
N, S, T are similar.

J (Join lines) -> T (make lines Together)
K (Keyword) -> S (Subject)
L[count] (Line count) -> N (line Number)

顺便提一下,L键会跳到最后一行,N是fin的最后一个字母。(感谢tenzu指出这一点。)

另外,我之前使用过这些重新绑定键位。但现在我不再在vim中使用它们,只用默认的键位。


2

Vim内置了一个广泛的Dvorak脚本,但不幸的是它不能直接进行source,因为该文件包含一些说明和另一个撤销其效果的脚本。要读取它,请使用以下命令:

:e $VIMRUNTIME/macros/dvorak

这个脚本的问题在于它假设你想要键位在相同的位置。而实际上,需要定位的只是移动键。 - he_the_great

1
您可以使用此功能仅在插入模式下让Vim使用Dvorak:
:set keymap=dvorak

这样所有的命令仍然是QWERTY的,但你键入的所有内容都是Dvorak的。
注意事项:几乎所有模式都是Dvorak的,但ex命令不是。这意味着您不必重新学习:wq,但需要在QWERTY中输入:%s/foo/bar/gc。
如果您只想移动某些命令,则此方法无法帮助您,但我发现在我的脑海中,“向前移动一个单词”绑定到“将左手无名指向上移动”,而不是“询问打字部门字母'w'在哪里,然后按下它”,这使得这种方法对我来说更加容易。

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