假设我们在 vim atm 中有以下内容:
int main () {
printf("hello");
return 0;
}
在 vim 中,w 将单词向右移动,但究竟什么是“单词”?
例如,如果我将光标放在 printf
的 p 上,按 w 会将您带到 (
然后按另一个 w 跳过 "
并将光标放在 hello
的 h
上。为什么 >"
跳过了吗?
现在按另一个 w 会将您带到 )
之前的另一个 "
,然后按另一个 w
会带您到下一行。为什么跳过了 )
和 ;
?
现在光标在 return
的 r
上。按 w 会将光标置于 0
上,而按另一个 w 现在会将光标置于 ;
上。所以在这种情况下,;
没有像上一行那样被跳过。这是为什么?
我希望我的问题足够清楚,但我只是想了解这一切是如何运作的。
最佳答案
来自 :help word
:
A word consists of a sequence of letters, digits and underscores, or a sequence of other non-blank characters, separated with white space (spaces, tabs, ). This can be changed with the 'iskeyword' option. An empty line is also considered to be a word.
如果您改用大写字母 W:
A WORD consists of a sequence of non-blank characters, separated with white space. An empty line is also considered to be a WORD.
在您的示例中,w
也将任何非关键字字母序列视为单词。
编辑:virtualedit
的设置也会影响这一点:您必须取消设置它,因为 w
跳过行末标点符号(添加一些空格到行尾以查看差异)。如果您设置 virtualedit=onemore
,光标将能够在行尾后停一个空格,并且永远不会跳过行最后的标点符号。
关于vim - vim 中的 'word' 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1888321/