代码之家  ›  专栏  ›  技术社区  ›  Andreas Grech

VIM中的“单词”由什么构成?

  •  1
  • Andreas Grech  · 技术社区  · 16 年前

    假设我们在VIM ATM中有以下内容:

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

    在VIM中, W 将一个单词向右移动,但“单词”的确切构成是什么?


    例如,如果光标在 属于 printf 压榨 W 把你带到 ( 再按另一个 W 跳过 " 并将光标放在 h 属于 hello .为什么是 他说:“这是一个很好的选择。” 跳过?

    按另一个 W 现在带你去另一个 之前 ) 再按另一个 w 带你到下一行。为什么在哪里 ) ; 跳过?

    现在光标在 r 属于 return . 按压 W 打开光标 0 再按另一个 W 现在将光标放在 (二) . 所以在这种情况下, (二) 不像前一行那样被跳过。为什么会这样?


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

    2 回复  |  直到 16 年前
        1
  •  9
  •   Michael Dunn    16 年前

    :help word :

    单词由字母、数字和下划线组成,或者 其他非空白字符的序列,用空格分隔(空格, 标签,)。这可以用“iskeyword”选项更改。空行 也被认为是一个词。

    如果您使用资本W代替:

    单词由非空白字符序列组成,用白色分隔 空间。空行也被认为是一个词。

    在你的例子中, w 将任何非关键字字母序列也视为单词。

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

        2
  •  2
  •   Nicolas Goy    16 年前

    从VIM内,类型

    :help word-motions
    

    你会得到所有你想要的解释。