给予:
for (int i = 0; i < 10; i++){
_ <---Cursor position3w导致
for (int i = 0; i < 10; i++){
_ <---Cursor positiond3w导致
fori = 0; i < 10; i++){
_ <---Cursor position也就是说,即使运动3w将光标移到i,i本身也不会被删除。
另一方面,鉴于:
for (int i = 0; i < 10; i++){
_ <---Cursor position%导致
for (int i = 0; i < 10; i++){
_ <---Cursor positiond%导致
for{
_ <---Cursor position也就是说,运动%将光标移至),而)本身被删除。
那么,为什么d{motion}有两种不同的效果呢?是否有任何单一的一般规则,这两者是一致的特例?
发布于 2021-01-09 13:52:04
是的,这是有逻辑的。在Vim中,一些运动(如w )是“排他性”,而其他运动(如% )是“包容性”的。这将决定行动是否会影响议案的最后一个特征。
实际上,您可以通过使用v运算符来覆盖运动的“独占”或“包容”状态(请注意,这里使用的是v作为运算符,而不是像正常模式命令那样启动视觉模式!)因此,dv3w (或d3vw)将删除它所在字符的第三个单词“包含”的开头,而dv%将删除下一个匹配的括号“独占”。
在某种程度上,视觉模式有点类似,因为默认情况下,视觉选择是“包含性的”,因此v3wd的行为与dv3w类似。(尽管可以被'selection'选项覆盖。)
请参见:
:help w:help %:help exclusive (与:help inclusive相同):help o_v:help 'selection'https://stackoverflow.com/questions/65643113
复制相似问题