2012-05-27 32 views
29

vim中有什麼方法可以選擇所有這些行的結尾嗎? (我只顯示這些截圖中的行結束)。Vim選擇多行的結尾(塊模式,但結尾列變化的地方)

在塊模式下,如果底線比其餘的長,我可以得到它們,但如果底線越短,則越長的線被截斷。

編輯|我想我可以在選擇之前用空格填充底線,然後再刪除空格。

enter image description here enter image description here

回答

49
  1. 把你的光標放在你想成爲該塊的一部分左上角的字符。
  2. 進入塊選擇模式CTRL +v
  3. 選擇與$行結束(這是你缺少的步驟,如果你移動到第一個結束使用$線,則選擇將延伸到隨後的線的端以及)
  4. 向下移動3行與 Ĵ

在Vim文檔的可視模式部分中,您可以使用read online或只需在Vim中鍵入:help v_$

+0

現貨上,謝謝!我沒有意識到vim會以這種方式對待:) – d11wtq

+1

可惜我不能給你超過1個upvote,你真的節省了我的時間,並讓我的一天更好,謝謝 –

+2

如果我想要更進一步最後一行的結尾,但不完全是最長行的結尾? – Thanatos

12

或者,您可以設置virtualedit:h 'virtualedit')設置,以便在任何時候處於可視塊模式時,都可以將光標移動到甚至超過行的末端。例如。 :set virtualedit=block

+2

哇,這非常有用!現在添加到我的.vimrc文件中。 – weronika

+0

我喜歡你,除了'virtualedit'增加了空格,超過了短線的末尾。有沒有辦法讓它不這樣做? – Thanatos

+0

@Thanatos我沒有碰到任何事情來實現這一點。 georgebrock的答案也有這個問題(但如果我正確理解你對他的評論,那麼virtualedit幾乎就是實現你想要的方式)。 – echristopherson

4

如果您想選擇每行的最後一個字符,就像如果你想在每行的末尾加上引號後的東西,你可以做到以下幾點:

  1. 把你的光標移到最後一個字符(在這個例子中,在第一行的最後報價)
  2. 進入塊模式:控制 + V
  3. 向下移動,只要你想改變選擇儘可能多的行。
  4. 插入在該行的末尾:轉變 + 要添加,然後退出可視模式
  5. 您的文字現在應該在每個選定行的末尾插入什麼?答
  6. 類型!

希望這對像我這樣的人有幫助尋找與上述類似但不完全相同的答案。

5
  1. 點擊您希望追加文本的第一行的某處(任何地方)。

  2. Press Control + V

  3. 向下創建跨越所需線的任意垂直塊選擇。

  4. $將視覺塊選擇擴大到所選每行的末尾。

  5. + 一個將文本追加到每個選定行。

  6. 輸入您想追加的文字。

  7. 轉義並且文本將被添加到選定的行中。