在vim中的视觉选择下从光标删除到行尾

时间:2015-04-17 07:35:03

标签: vim

我有一个如下代码段。

type Account struct {                                                                                                                                                                                       
    Id                         int                                                                                                                                                                          
    UserId                     int                                                                                                                                                                          
    Name                       string                                                                                                                                                                       
    Address                    string                                                                                                                                                                       
    City                       string                                                                                                                                                                       
    State                      string                                                                                                                                                                       
    CountryId                  string 
}

我想删除所有数据类型。这有关键组合吗?

我尝试<C-V>并在垂直行中选择所有数据类型的第一个字母,希望d + $可以发布,但是vim只接受第一个输入d并删除第一封信。

5 个答案:

答案 0 :(得分:7)

使用<C-v>进入可视屏蔽模式,选择要更改的行,然后D删除,直到结束。

来自:h v_D

{Visual}["x]X   or                  *v_X* *v_D* *v_b_D*
{Visual}["x]D       Delete the highlighted lines [into register x] (for
                    {Visual} see |Visual-mode|).  In Visual block mode,
                    "D" deletes the highlighted text plus all text until
                    the end of the line.  {not in Vi}

请注意,正如帮助中所述,XD在视觉模式下不相同(X仅删除当前选择,而不是直到行结束。)

答案 1 :(得分:3)

您可以移动到左括号,按%键并发出:

s/ \+[^ ]* *$/

得到:

type Account struct
    Id
    UserId
    Name
    Address
    City
    State
    CountryId
}

替换将删除行末的所有非空格字符。

答案 2 :(得分:3)

您可以使用C-V并选择所有数据类型的第一列,然后执行$选择直到该行的结尾,然后选择xd删除。

答案 3 :(得分:0)

  1. 使用v6j直观地选择所有这些行。
  2. 使用:'<,'>norm ElD删除多余内容('<,'>会自动添加)。
  3. 另外,请注意尾随空格!

答案 4 :(得分:0)

不是最短的序列,但对我来说更自然

  • vi{ - 直观地选择内部段落
  • '<,'>norm weld$ (键入:norm weld $)

女巫分解为

  • '<,'>norm - 在选择
  • 上应用常规命令
  • wel - 跳到第一个单词
  • 的末尾
  • d$ - 删除直到行尾