Vim和Neovim显然有两个不同的键用于文本对象“段落”的运动和选择。我发现这有点混乱,有人能解释一下原理是什么吗?例如,我使用}跳转到下一个段落,但我不能使用vi}选择我当前所在的段落,我必须使用vip代替。但我不能使用p跳转到下一个段落。相反,对于对象“word”,我可以使用w作为运动,使用viw作为选择。
}
vi}
vip
p
w
viw
46scxncf1#
文本对象是一种特殊的运动,不会与常规运动1:1Map。它们并不是常规运动的“选择”变体,它们是运动的补充集,与基本集几乎没有关系。你提到了w和viw,沿着一个想象中的“单词对象”,但是没有这样的东西,你有一个运动w,它把光标移动到 * 下一个单词 * 的第一个字符上,而文本对象iw文本对象iw中的w不是运动w中的w。实际上,这是一个常见误解,在iw中没有i或w:iw不是两个分立的东西放在一起,它本身就是一个原子。类似地,}和i}没有任何关系,你不能使用>将光标移动到下一个HTML标签,也不能使用s到达下一个句子,简单地说,规则运动和文本对象之间没有任何联系。
iw
i
i}
>
s
c3frrgcw2#
键是有限的。所以也许这只是因为p适合“放置文本...”比“段落移动”。
2条答案
按热度按时间46scxncf1#
文本对象是一种特殊的运动,不会与常规运动1:1Map。它们并不是常规运动的“选择”变体,它们是运动的补充集,与基本集几乎没有关系。
你提到了
w
和viw
,沿着一个想象中的“单词对象”,但是没有这样的东西,你有一个运动w
,它把光标移动到 * 下一个单词 * 的第一个字符上,而文本对象iw
文本对象iw
中的w
不是运动w
中的w
。实际上,这是一个常见误解,在iw
中没有i
或w
:iw
不是两个分立的东西放在一起,它本身就是一个原子。类似地,
}
和i}
没有任何关系,你不能使用>
将光标移动到下一个HTML标签,也不能使用s
到达下一个句子,简单地说,规则运动和文本对象之间没有任何联系。c3frrgcw2#
键是有限的。所以也许这只是因为
p
适合“放置文本...”比“段落移动”。