我们知道,英文文档的主体是单词,通常用空白字符(包括空格、制表符和回车换行符)来分隔单词。vim中提供了许多命令来按单词移动。
要根据单词来移动,首先要把文本分隔为一个个独立的单词。vim在对单词进行分隔时,会把’iskeyword‘选项中的字符做为单词的组成字符。也就是说,一个单词(word)由’iskeyword‘选项中定义的字符构成,它前面、后面的字符不在’iskeyword‘选项定义的字符中。例如,如果我们把’iskeyword‘选项设置为”a-z,a-z,48-57,“,那么”foobar_123“被做为一个单词,而”foobar-123“被做为三个单词:”foobar“, “–“和”123“。”a-z,a-z,48-57,“中的48-57表示ascii码表中的数字0-9。
vim中,移动光标到下一个单词的词首,使用命令”w“,移动光标到上一个单词的词首,使用命令”b“;移动光标到下一个单词的结尾,用命令”e“,移动光标到上一个单词的结尾,使用命令”ge“。
上面这些命令都使用’iskeyword‘选项中的字符来确定单词的分界,还有几个命令,只把空白字符当做”单词“的分界。当然,这里说的”单词“已经不是传统意义上的单词了,而是由非空白字符构成一串字串。命令”w“移动光标到下个字串的开始,命令”b“移动到上个字串的开始;命令”e“移动到下个字串的结尾,命令”ge“移动到上个字串的结尾。和上面的命令比较一下,发现什么规律没有?