2014-04-14 33 views
1

启动vim。 在空缓冲区中,插入两行,其中第一行由3个空格组成,第二行由hello world组成。Vim中非空白字符的定义是什么?

这里就是空间用点表示的示例文件。

... 
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提供的文档的实验观察行为?
+0

似乎这种行为可能是'gg'实现的副作用。我不认为文档明确定义了“非空白”,因为据了解,“空白”是指空格(ASCII 32)或制表符(9)字符。 – graywh

+0

':helpgrep非空白'。 – romainl

+0

@romainl我做了':helpgrep非空白'然后':cnext'多次,但是我没有找到非空白定义的位置。你能指点我的非空白定义的帮助文件吗? –

回答

3

我不认为这是在VIM文档一个非空一般定义,但我也并不认为这是一个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. 转到该行的第一个非空白字符。

也许最简单的方式来实现2作为算法后在该行的开始所有的空白字符将光标定位。在你的情况下,它们都是空白字符(并且它不能移动到下一行),所以光标位于行尾(在所有空白字符之后)。

相关问题