Vim中非空白字符的定义是什么?

时间:2014-04-14 20:20:44

标签: vim

启动vim。 在空缓冲区中,插入两行,其中第一行包含3个空格,第二行包含hello world

这是一个示例文件,其中空格用点表示。

...
hello world

现在按gg。光标移动到第一行的第三个空格。

引用:help gg

<C-Home>    or                  *gg* *<C-Home>*
gg          Goto line [count], default first line, on the first
            non-blank character |linewise|.  If 'startofline' not
            set, keep the same column.

文档说光标应该移动到第一行的第一个非空白字符。我有两个问题。

  1. :help是否记录了非空字符的定义?如果是的话,你能指点我吗?
  2. 我们在上述实验中观察到的行为是否与:help gg中提供的文档一致?

1 个答案:

答案 0 :(得分:3)

我不认为vim文档中存在非空白的一般定义,但我也不认为这是一种&#34;副作用&#34; gg

请注意gg^一致:

^          To the first non-blank character of the line.           
           |exclusive| motion.
vim的模式匹配行为([:blank:])的

:h blank将空白字符定义为空格和制表符:

*[:blank:]*               [:blank:]     space and tab characters

至于这是否与gg一致,请考虑它所说的将分为两步而不是一步:

  1. 转到第一行(默认为未指定计数) - 它执行此操作。
  2. 转到所述行的第一个非空白字符。
  3. 将2实现为算法的最简单方法可能是将光标定位在行开头的所有空白字符之后。在您的情况下,它们都是空白字符(并且它不能移动到下一行),因此光标位于行的末尾(在所有空白字符之后)。