在vim中,当你想删除一个内部单词时,可以在普通模式下按以下:
diw
Run Code Online (Sandbox Code Playgroud)
但是如果你想删除一个外部单词,你应该按:
daw
Run Code Online (Sandbox Code Playgroud)
现在的问题是,i
代表inner
,但为什么在外部的情况下,它不是dow
,但daw
?
来自: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)