vim 的转义模式下 w 和 W 有什么区别?

rah*_*til 27 vim

我正在查看用于移动光标的 vim help quickref 命令。以下几行让我感到困惑,因为我发现它们的工作方式相同。有人可以用一个例子详细说明我的区别。

N  w            N words forward
N  W            N blank-separated WORDS forward
Run Code Online (Sandbox Code Playgroud)

同样的问题也适用于 e 和 E。

slm*_*slm 48

根据这个备忘单,它似乎归结为标点符号。

w   jump by start of words (punctuation considered words)
W   jump by words (spaces separate words)
e   jump to end of words (punctuation considered words)
E   jump to end of words (no punctuation)
Run Code Online (Sandbox Code Playgroud)

例子

演示使用 w

          w 的 ss

演示使用 W

          W的ss

注意在第一个演示中如何w连续点击光标落在标点上,而在第二个演示中标点被跳过。这是小写命令与其大写等效命令之间的区别。


kur*_*rtm 6

它实际上相当简单,w只是跳到下一个单词,但是任何类型的标点符号或空格都会分解单词。 W就像工业强度的 next-word 命令一样,单词只能由空格分隔,无论是制表符、空格还是换行符。 w也停在定界标点符号处,以防您想处理它。

我发现差异对主机名最有用:

birdman.cartoons.fictional.com # Fictional host

使用w,您可以停在主机名和点的每个部分。 W只是跳过整个主机名并转到#. 这些都同样适用于dc删除和更改的话。

如果定位在上一行的开头,如果你想birdman.cartoons用别的东西替换,你会用3cw前两部分和中间的点来替换。如果W不重新输入整个主机名,您就无法做到这一点。