2013-06-24 69 views
3

我一直在使用vim,但最近纔開始學習如何真正使用它。 我有些疑問似乎令人費解的行爲。爲什麼'2>'表示在vim上縮進2個級別?

爲什麼2>不意味着縮進2級而不是縮進2行? >2j已經達到了相同的目的,並且縮進2個級別似乎是更直觀的行爲。

另一個類似的問題是爲什麼'G'意味着跳到最後一行,但'10G'意味着從緩衝區的底部緩衝區的頂部跳到第10行。

如何正確解決這些問題?

我應該嗎?可以改變行爲中斷插件或任何東西?


注:我想提一提,我知道怎麼得到我想要的功能,即。 :>>用於多級縮進,:$-10用於跳至第n行底部。

+1

如果您希望2>縮進兩次,只需按v進入可視模式,並且如果您將其設置爲使用空格,則會插入兩個製表符或空格 – csteifel

回答

14

2>>

您所描述的行爲是由於如何{count}作品與線明智命令:不執行命令{count}次,但作爲在其行動的行數認爲{count}

你可以在做2: Vim中如何做它的事一瞥,這是你應該在命令行得到了什麼:

:.,.+1 

2>>因此相當於:

:.,.+1> 

」縮進這條線和下面的一條水平線「。

在正常模式下,只需點擊>>即可將當前行縮進一級,然後重複,直到您處於正確的級別。

如果您想要2>縮進兩級,您必須首先直觀地選擇該行:V2>v2>

如果要「修復」當前行的縮進以使其與周圍行的縮進(此類任務的最常見方案)匹配,請按==

10G

G期望一個{count}跳轉到相應的行。沒有{count}它默認跳到最後一行:您可以將其視爲{lines in buffer}G的便捷快捷方式。

所以你正在反轉一點:G不是「跳到最後一行」,它是「跳轉到{count},但沒有{count}所以我們走到最後一個」。

- startEdit中 -

讓我們反向工程G的樂趣:

  1. G首先設想爲正常模式相當於:number<CR>

  2. 決定不使用G23,而是使用{count}機制,所以我們有23GG不是運營商:它不等待目標。

  3. 但是我們如何處理G,沒有{count}

  4. 通常,一個緩衝區有兩個「特殊」行:第一個和最後一個。也許我們可以決定G的默認目的地是什麼?爲什麼不?我們討厭浪費的鑰匙!

  5. G並不比1G短得多,但它更短,所以這可能是一個好主意,使G跳轉到第一行。

  6. 但是最後一行呢? 12G確定當我們知道緩衝區中有12行,但1257行是什麼?未知的行數呢?查找數字並鍵入2431G是否有效?不,在那個時候,我們不妨做:$<CR>。那麼,爲什麼我們不使用G,在這裏?它比任何其他達到最後線的方式都短得多,速度更快。

(這是純粹的猜測,當然,我不知道比爾·喬伊的初衷時,他設計G

- EndEdit中 -

固定的Vim

一般來說,Vim不需要是「固定的」。相反,你必須知道它是如何工作的,以及如何利用它的力量。它的大部分意義非常重大:當你「得到它」時,獎勵將是巨大的。

此外,所有內容的行爲:help中解釋:學習如何使用它是您認真使用Vim時必須成長的頭號技能。