我想在vim中定义自己的键绑定(覆盖默认键):
1)如何映射运营商?例如,我想将删除操作符映射到“l”键,所以ll将删除整行并且删除当前单词。
2)如何取消映射运营商?我想从d键取消映射删除操作符,所以我可以使用这个键(d)来做另一件事,我试着简单地将“d”键重新映射到另一个动作(例如nmap dk),但这会导致一个延迟第二次按“d”时(因为vim正在等待动作)。
这样做的一个主要原因是我的键盘有一个数字小键盘,我不想每次输入数字时都将我的右手从hjkl切换到数字键盘(这很多),我我喜欢将hjkl更改为asdf,将左手固定在动作和特殊键(crtl,shift,esc)上,并将右手用于其他命令。我的工作效率大大提高了。
答案 0 :(得分:1)
你无法取消映射d以释放其他东西。你甚至不需要:做
nnoremap l d
会将l
映射为与d
相同的内容(注意:这不允许ll
)。
nnoremap d {some-other-thing}
会映射d
来做其他事情,你不需要在这里释放一些东西。更多,在完成以上所有之后
nnoremap l c
将使l
具有与c
相同的含义,而没有任何取消映射:*map
命令会覆盖现有映射,除非它们被赋予<unique>
参数。
要允许ll
您有一些选择:
nnoremap ll dd
或
onoremap l d
。请注意,遗憾的是,我不知道与重复字符相同的动作,但不依赖于运算符。因此,ll
将适用于最后一种情况,但cl
将失败,就像cd
一样。
如果你经常在另一台机器上工作,那么它是可能的并不是一个好主意。如果你不知道,这也不是一个坏主意。如果每个人都在关心使用另一台机器,那么你将使用记事本,没有++
。