我指的是:http://vimdoc.sourceforge.net/htmldoc/motion.html#exclusive。 具体来说,以下文字:
提及哪些动作是行,包含或排他 命令。但是,有两个例外:
- 如果动作是独占的,并且动作的结束位于第1列,则为 运动结束移动到前一行和运动的末尾 变得包容。示例:
醇>}
移动到段落后的第一行, 但d}
不会包含该行。
给出以下文本开头:
This is just a random paragraph.
This is another random paragraph ([S]ome text inside brackets).
This is a third paragraph.
我首先在第S
之后的第(
字符中点击d}
字符。
我在正常模式下执行以下命令 - This is just a random paragraph.
This is another random paragraph [(]
This is a third paragraph.
。我得到以下内容:
(
光标现在位于第二段中的}
。根据上述规则,这是预期的:d
是一个独占运动,它使光标转到第2和第3段之间空白行的第1列;根据规则,光标将转到上一行(在完整站点上),并且运动变为包含(在S
操作中删除全站点)。
让我们再次拍摄原始文字,再次将光标放在d{
上。
如果我执行以下命令 - {
- 在正常模式下,我希望得到以下内容,因为S
是一个独占运动,它会导致光标转到第1列第1段和第2段之间的空白行:第1段的全文与This is just a random paragraphome text inside brackets).
This is a third paragraph.
之间的所有内容都将被删除,包括在内。
This is just a random paragraph.
[S]ome text inside brackets).
This is a third paragraph.
但实际发生的是:
S
光标位于{{1}}。
这是异常的例外吗?或者我只是把它弄错了?
答案 0 :(得分:3)
要理解一个独有的动作,重要的是被排除的角色总是在缓冲区末端最远的角色。
当你前进的时候,你跳到的那个角色被排除在外,但是当你倒退的时候,它实际上是被排除在光标下的角色。
这是你的第二个例子。 {
涵盖的部分以粗体突出显示。
This is just a random paragraph.

This is another random paragraph (Some text inside brackets).

This is a third paragraph.
如您所见,S
已被覆盖,但它是目标的最右侧角色,因此 - {
是一个独占动作 - 它不受操作影响。
删除前面的所有内容,包括前面一行中的换行符({
落在光标处)。所以你所看到的确实是预期的:
This is just a random paragraph.
Some text inside brackets).

This is a third paragraph.
答案 1 :(得分:0)
@glts 经过深思熟虑,我想我明白你现在要说的是什么。基本上我误解了手册的“动作开始”和“动作结束”的含义。简而言之,如果我理解正确,“运动开始”始终是最接近缓冲区起点的位置,“运动结束”是最接近缓冲区末端的位置,无论其中的“方向”如何动作导致光标移动!