2

假设我们在 vim atm 中有以下内容:

int main () {
    printf("hello");
    return 0;
}

在 vim 中,w将一个单词向右移动,但究竟什么是“单词”?


例如,如果我将光标放在pof上printf,按wu 到(并按另一个会w跳过 the"并将光标放在hof 上hello。为什么被"跳过了?

w现在按另一个将您带到另一个")然后按另一个w将您带到下一行。为什么);跳过了?

现在光标在rreturn。按 aw将光标移到上0,按另一个w现在将光标移到 上;。所以在这种情况下,;与前一行不同,没有跳过。为什么是这样?


我希望我的问题足够清楚,但我只是想了解这一切是如何运作的。

4

2 回答 2

10

来自:help word

一个单词由一系列字母、数字和下划线或一系列其他非空白字符组成,用空格(空格、制表符、)分隔。这可以通过 'iskeyword' 选项进行更改。空行也被认为是一个单词。

如果您使用大写 W 代替:

一个 WORD 由一系列非空白字符组成,用空格分隔。空行也被认为是一个字。

在您的示例中,w也将任何非关键字字母序列视为一个单词。

编辑: 的设置virtualedit也会影响这一点:您必须取消设置,因为正在跳过行尾标点符号w(在行尾添加一些空格以查看差异)。如果您设置virtualedit=onemore光标将能够在行尾之外停止一个空格,并且不会跳过行尾标点符号。

于 2009-12-11T14:19:03.813 回答
2

在 vim 中,键入

:help word-motions

你会得到你寻求的所有解释。

于 2009-12-11T14:19:27.010 回答