2014-04-14 74 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作爲算法後在該行的開始所有的空白字符將光標定位。在你的情況下,它們都是空白字符(並且它不能移動到下一行),所以光標位於行尾(在所有空白字符之後)。

相關問題