为什么vim有两个不同的文本对象键用于段落移动和段落选择?

sbdsn5lh  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(147)

Vim和Neovim显然有两个不同的键用于文本对象“段落”的运动选择。我发现这有点混乱,有人能解释一下原理是什么吗?
例如,我使用}跳转到下一个段落,但我不能使用vi}选择我当前所在的段落,我必须使用vip代替。但我不能使用p跳转到下一个段落。
相反,对于对象“word”,我可以使用w作为运动,使用viw作为选择。

46scxncf

46scxncf1#

文本对象是一种特殊的运动,不会与常规运动1:1Map。它们并不是常规运动的“选择”变体,它们是运动的补充集,与基本集几乎没有关系。
你提到了wviw,沿着一个想象中的“单词对象”,但是没有这样的东西,你有一个运动w,它把光标移动到 * 下一个单词 * 的第一个字符上,而文本对象iw文本对象iw中的w不是运动w中的w。实际上,这是一个常见误解,在iw中没有iwiw不是两个分立的东西放在一起,它本身就是一个原子。
类似地,}i}没有任何关系,你不能使用>将光标移动到下一个HTML标签,也不能使用s到达下一个句子,简单地说,规则运动和文本对象之间没有任何联系。

c3frrgcw

c3frrgcw2#

键是有限的。所以也许这只是因为p适合“放置文本...”比“段落移动”。

相关问题