Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Vim正常模式下交换键,而不仅仅是重新映射键?_Vim_Key Bindings - Fatal编程技术网

如何在Vim正常模式下交换键,而不仅仅是重新映射键?

如何在Vim正常模式下交换键,而不仅仅是重新映射键?,vim,key-bindings,Vim,Key Bindings,我使用Dvorak,因此我的.vimrc中有以下内容: no t j no n k no s l no l n no j t no k s 它将方向键映射回主行的右侧 这通常工作得很好,除了在插件中。例如,我不能在NERDTree插件中使用向上和向下导航,因为它会使t变成其他东西 有没有一种方法让我,而不是简单地重新映射键,告诉VIM考虑在正常模式下按下T来转换成J的按压,不管上下文或插件是什么? 我似乎模模糊糊地记得一个vim命令将一个键别名为另一个键,但我找不到它。简单地了解一下这些键的D

我使用Dvorak,因此我的.vimrc中有以下内容:

no t j
no n k
no s l
no l n
no j t
no k s
它将方向键映射回主行的右侧

这通常工作得很好,除了在插件中。例如,我不能在NERDTree插件中使用向上和向下导航,因为它会使t变成其他东西

有没有一种方法让我,而不是简单地重新映射键,告诉VIM考虑在正常模式下按下T来转换成J的按压,不管上下文或插件是什么?


我似乎模模糊糊地记得一个vim命令将一个键别名为另一个键,但我找不到它。

简单地了解一下这些键的Dvorak位置可能是值得的。hjkl移动,但(imho)不会以妨碍其有效使用的方式移动。h和l是你右手的索引和小指,j和k是中间的,索引在你左手


重新映射您的大脑需要一段时间,但大部分Vi键盘布局都是助记的,因此比可能的要容易(例如,使用emacs,它相当于对Dvorak怀有敌意的IMHO)。

我找到了我想要的:

set langmap=tj,nk,sl,ln,jt,ks

这里讨论了一些很好的警告和注释:您是否已取消映射“t”?应该有一个
jt
而不是一个
tj
s吗?嘿,dvcolgan,对于涉及
的地图,例如,如果按
ctrl+t
,它的行为是否与
相同?那对我不起作用。你遇到过这个问题吗?