在VIM中,为什么不“db”删除光标下的字符?

时间:2013-02-11 04:55:55

标签: vim

我读到 b 就像 e 的反面,即 b 做的事情是向后做的。

因此,如果我在单词上按 d e 并且光标位于单词的第一个字母上,则会删除整个单词。太棒了!

但是如果我在一个单词上按 d b 并且光标在单词的最后一个字母上,它会删除整个单词,除了光标所在的字母好了!

我知道在使用 b 时我可以移动一个字符,但我想保持一致。也许有人可以告诉我为什么 b 表现得像这样。

5 个答案:

答案 0 :(得分:9)

b e 不同,因为 b 独占运动,而 e 包含。来自:help e& :help b

  

e 前往单词[count] 包含的结尾。不要停在一条空行。

     向后

b [count]字。 独家动议。

来自:help exclusive

  

角色动作包含或包含。包容性时   动作的开始和结束位置包含在   操作。独占时,最后一个字符朝向结尾   缓冲区不包括在内。线性运动总是包括开始和   结束位置。

答案 1 :(得分:6)

vim光标是一个非常恶心的东西,设计很差,模仿终端的块光标。光标位置实际上位于块的开始/左侧,因此如果块在k中的“bark”并且您 d b < / kbd>您实际上是从r删除到b

幸运的是,you can change the cursor是合理的

答案 2 :(得分:1)

您应该查看:help text-objects:它允许您将命令应用于智能对象,如单词,句子或段落。

对于删除单词,无论光标位置如何,都应使用 d i w

答案 3 :(得分:0)

删除一个单词 d a w

删除光标下的单词和左侧的空格,将光标留在上一个单词的末尾。这是一个可重复的变化。在VIM中,您可以使用重复。

$ |然后是非 e

d a w |然后有 s

|然后再 e

答案 4 :(得分:0)

最终使用 v 在向后运动中使用视觉模式。

" Backward motion, inclusive the current cursor.
onoremap b vb
onoremap F vF
onoremap T vT

这是按预期工作的,对于我的典型用途来说已经足够了。相关文章: https://jdhao.github.io/2019/05/18/nvim_exclusive_inclusive_motion/