为什么'a'在vim中代表外部而不是'o'?

Tri*_*Tri 1 vim

在vim中,当你想删除一个内部单词时,可以在普通模式下按以下:

diw
Run Code Online (Sandbox Code Playgroud)

但是如果你想删除一个外部单词,你应该按:

daw
Run Code Online (Sandbox Code Playgroud)

现在的问题是,i代表inner,但为什么在外部的情况下,它不是dow,但daw

rom*_*inl 6

来自:help text-objects

以“a”开头的命令选择 包含空格的“a”n对象,以“i”开头的命令选择没有空格的“内部”对象,或仅选择空格。因此“内部”命令总是比“a”命令选择更少的文本。

请注意,文本对象的边界是文本对象的组成部分。如果“内部”是什么,是内部的边界,然后在“外”会是什么之外他们的,因而在缓冲一切。

从这个角度来看,选择边界内的内容边界本身实际上是在选择“一个”整个文本对象。

Foo <span>bar</span> baz.
                           -- actual meaning --
    <---->   <----->       the boundaries of the text object
          <->              what is inside those boundaries
                             -> "inner text object"
                             -> "it"
    <-------------->       the boundaries + what is inside them
                             -> "a text object"
                             -> "at"

                           -- hypothetical meaning --
<-->                <--->  what is outside of the boundaries
                             -> "outer text object"
                             -> "ot"
Run Code Online (Sandbox Code Playgroud)