删除突出显示文本的行/删除突出显示的文本

时间:2011-05-24 07:51:29

标签: vim highlighting

有谁知道如何删除:

  1. 带有突出显示文字的行
  2. 所有突出显示的文字自我
  3. (突出显示的文字(搜索后的p.e。)未选择文字)


    是否有搜索所有突出显示文本并删除该行的命令? (独立于我用来突出显示文本的搜索命令或功能)

    g/pattern/d命令并不总是删除突出显示的文本
    体育/^\(.*\)\(\n\1\)\+$ - >突出显示所有双线
    但是g/^\(.*\)\(\n\1\)\+$/d - >不会删除所有双行

5 个答案:

答案 0 :(得分:12)

好吧,你可以这样删除搜索到的模式:

:%s/<pattern>//gc

您可以通过以下方式删除搜索模式的整行:

:g/<pattern>/d

答案 1 :(得分:3)

  

如何删除:2)所有突出显示的文字自我

您可以使用搜索和替换(替代)来执行此操作。

通常使用如下:

:%s/your_search_here/your_replacement_here/gc

更具体地说,替换您的搜索结果(删除它们):

:%s/your_search_here//gc

在结尾处省略c以替换所有内容而无需确认。

输入:help :s了解详情。

  

如何删除:1)带有突出显示文字的行

要删除整行,您可以执行替换,只需将整行与正则表达式(%s/^.*your_search_here.*\n//g)匹配,或者可以使用多次重复(多次重复)功能。

通常使用如下:

:g/your_search_here/[cmd]

更具体地说,将它与用于删除行(d)的常规命令相结合:

:g/your_search_here/d

输入:help :g了解详情。

<强>提示

在替换之前获得正确查询的简单方法是在命令模式而不是默认模式下进行搜索。

而不是:

/your_search_here

类型:

:/your_search_here

然后你可以进入命令模式(:),点击向上键以显示你的上一次搜索,并编辑该行以将其转换为替代。

答案 2 :(得分:3)

除了sixfeetsix' answer

  • 删除所有不包含<pattern>的行,键入:g!/<pattern>/d:v/<pattern>/g
  • 为避免在<pattern>之后输入:g/,请键入:g/ CTRL - r //d搜索寄存器的内容( CTRL - r /表示在您输入的命令中注册/}。

答案 3 :(得分:2)

来自this SuperUser answer

  

您可以在7.4版及更高版本中使用gn(并向后使用gN)。它取代了v//e技巧。

     
    

向前搜索最后使用的搜索模式,例如使用`n`,然后启动可视模式以选择匹配项。

  
     

有关更多信息,请参见:help gnthis Vimcast

答案 4 :(得分:0)

我猜它与此基本相同的问题: Vim: when matching string across multiple lines using \_. in regex, yank command only works for the first line

它看起来像是Vim中的一个错误。