gpt4 book ai didi

vim - 试图理解 Vim 中删除的逻辑

转载 作者:行者123 更新时间:2023-12-04 23:16:18 25 4
gpt4 key购买 nike

我用谷歌搜索了这个,但找不到任何明确的解释。

很多人称赞 Vim 是它自己内部一致的语言,但我没有看到一致性。

hjkl左下右上:
dh就像“删除左侧”一样,它删除光标左侧的字符,到目前为止是有道理的。
dl就像“删除正确”一样,但它删除了......当前角色?
dj就像“删除”一样,我认为这只是删除了下面的行,但它实际上也删除了当前行!

'dk' 就像“删除”一样,同样我希望它只是清除上面的行,但它会清除当前行及其上面的行。

谁能解释一下这里的逻辑是什么?我同意删除 + 左右处理同一行上的字符,删除 + 上下处理行的想法,但为什么行为如此不一致?我在这里缺少的逻辑是什么?

或者它真的更像是“这里真的没有一致的逻辑,只需记住它”?

最佳答案

这是一致的。将其视为文本光标,而不是块光标,例如:

abc
^

你在这里用光标。对于删除命令,它实际上是这样的:
a|bc

Vim 总是处理范围。如果不指定范围,只指定目标,范围的第一个点始终是光标位置:所以 dh是从这里删除到 h , 与 h处于以下位置:
|abc

所以你告诉 vim 从 a|bc 中删除至 |abc因此,光标位置之间的所有内容都将被删除。
dla|bc 转到另一个方向至 ab|c -> a|b|c所以只有 b将被删除。

jk Action ,是以线为主,但基本相同。

所以如果你按 dk在以下情况下:
abc

abc
^

您告诉 vim 删除每一行,直到到达以下位置:
abc
^
abc

这与 vim 中的所有其他命令一致,并且是使 vim 如此强大的部分原因。
想想搜索 /命令例如:
 abc
a|bc
abc
dfe
dfe
dfe

如果您按 d/dfe<CR>它不会只是删除 dfe , 会一直删除到 dfe .所以你将有以下两个光标位置:
 abc
a|bc
abc
|dfe
dfe
dfe

中间的所有内容都将被删除,您最终会得到:
 abc
a
dfe
dfe
dfe

其他所有运动都是如此。

关于vim - 试图理解 Vim 中删除的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46578519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com