为什么 `dae` 命令会删除文件中的所有内容?

Why does `dae` command delete everything in a file?

最近开始探索VIM,知道了daw这个命令,它不仅可以删除下一个单词之前的内容,还可以完全删除当前单词。 从逻辑上讲,dae 命令会在单词结尾之前删除,但突然间,它只是清除了文件……所以,有什么问题吗?

好吧,让我们仔细看看你在做什么:

daw -> 删除一个词。删除类型为 word 的对象,包括空格。 (有diw -> Delete inner word,不删除空格)。此对象可以在 :h text-objects

中找到

现在你尝试同样的动作 e,这是单词的结尾。单词的结尾不是文本对象,而是一个位置。这就是 ai 不能用于 de 的原因。

在 vim dae 中无效。不知道 vs code 从中得到了什么。

vscodevim中,动作ae引用了整个缓冲区,因此dae将删除它。

请注意,这与“真实”无关 Vim,那不是一个有效的命令。我会使用 Gd1G 在 Vim:

中产生相同的效果
  • G 转到最后一行;
  • d1G 从那里删除到第一行。

虽然毫无疑问还有其他方法,但 Vim 在不同的做事方式上如果不是多产的话也算不了什么:-)