The*_*ker 3 keyboard vim keyboard-shortcuts shortcut key-bindings
我用Google搜索了这个,但无法找到任何明确的解释.
很多人都称赞Vim是一种内部一致的语言,但我没有看到它的一致性.
由于hjkl左下:
dh 就像"删除左"一样,删除光标左侧的字符,到目前为止是有意义的.
dl 就像"删除权限"但删除了...当前字符?
dj 就像"删除"一样,我假设这只是删除下面的行,但它实际上也删除了当前行!
'dk'就像是"删除",同样我希望它只是清除上面的行,而是清除当前行和它上面的行.
谁能解释这里的逻辑是什么?我可以在同一行删除+左右处理字符,并删除+上下处理行,但为什么行为如此不一致?我在这里缺少什么逻辑?
或者它真的更像是"这里没有一致的逻辑,只是记住它"的事情?
这是一致的.将其视为文本游标,而不是块游标,例如:
abc
^
Run Code Online (Sandbox Code Playgroud)
你在这里用光标.对于删除命令,它实际上是这样的:
a|bc
Run Code Online (Sandbox Code Playgroud)
Vim始终适用于范围.如果你没有指定一个范围,只有一个目标,那么范围的第一个点总是光标位置:所以dh从这里删除h,其h位置如下:
|abc
Run Code Online (Sandbox Code Playgroud)
所以你告诉vim删除a|bc,|abc因此删除了光标位置之间的所有内容.
dl从去另一个方向a|bc来ab|c> - a|b|c因此,只有b将被删除.
在j与k运动,它是基于行的,但基本上是相同的.
因此,如果您按下dk以下情况:
abc
abc
^
Run Code Online (Sandbox Code Playgroud)
你告诉vim删除每一行,直到你到达以下位置:
abc
^
abc
Run Code Online (Sandbox Code Playgroud)
这与vim中的所有其他命令一致,并且是使vim如此强大的一部分.想想搜索/命令,例如:
abc
a|bc
abc
dfe
dfe
dfe
Run Code Online (Sandbox Code Playgroud)
如果你按d/dfe<CR>它不会只删除dfe,它将删除,直到dfe.所以你将有两个光标位置:
abc
a|bc
abc
|dfe
dfe
dfe
Run Code Online (Sandbox Code Playgroud)
介于两者之间的所有内容都将被删除,您将最终得到:
abc
a
dfe
dfe
dfe
Run Code Online (Sandbox Code Playgroud)
每个其他运动都是这种情况.
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |