2013-11-23 48 views
21

哪種方法可以在VIM中選擇整行而不使用換行符?在VIM中選擇整行,不包含換行符

我知道SHIFT +v選擇整條生產線,但隨着新行字符


要做到這一點,我去行,我按:

  • ^(把光標在該行的開始)
  • v(開始視覺選擇)
  • $(選擇整行包括換行字符)
  • (取消選擇換行字符)

我也知道,我可以創造一個記錄,做這樣的事情。但我問是否有任何內置的快捷方式...

回答

19

不,沒有什麼內置的工作。這就是爲什麼人們甚至創建插件來滿足需求的原因。

可能最受歡迎的選擇是textobj-line。用textobj行,你會得到兩個新的文本對象,al「一條線」和il「內線」。然後,

  • vil選擇線(如^vg_)的可打印內容,
  • val選擇整個線內容(如0v$h)。

兩者都不包括選擇中的換行符。

非常方便的插件,如果你問我。它也適用於運營商。


按要求,安裝:

  • 隨着普通的Vim:
    1. 獲取最新textobj-user並提取其目錄爲~/.vim
    2. 獲取最新的textobj-line並將其目錄解壓縮到~/.vim
    3. 生成幫助標籤:helptags ~/.vim/doc
  • 有了插件管理器(推薦):只要按照你的插件管理器通常安裝過程中,不要忘記安裝textobj用戶依賴爲好。
+0

您能否包含安裝步驟? –

+0

非常好!謝謝! –

2

你還是可以映射到你想要的東西,如:

nnoremap <leader>v 0v$ 
+0

這仍然會複製換行符,因爲'$'包含當前行末尾的換行符。 – jerzy

6
0v$ 
^v$ 
0vg_ 
^vg_ 
$v0 
$v^ 
g_v0 
g_v^ 

所有做的線就是不同的概念工作(從第一列或第一個可打印字符,最後一個字符或最後一個可打印字符)。如果你喜歡,你可以創建一個自定義映射。

請注意,在vim中選擇文本通常是不必要的。

17

是的,g_是你在找什麼。 g_就像$,但末尾沒有換行符。

使用0vg_^vg_,這取決於是否要分別從行的開頭或行的第一個字符開始複製。

+1

下劃線的人很有用。不知道>)謝謝:D –

2

如果要將行復制到緩衝區中,可以使用D刪除光標位置到行尾,然後使用u還原更改。文本將被複制到緩衝區,而不需要換行符號。所以命令是:

Du