如何删除使用vim多次出现的文本块

时间:2014-04-22 13:14:41

标签: vim

偶尔使用vim会有一段代码在我想要完全删除的文件中多次出现。

采取以下措施: enter image description here

我突出了有问题的代码块。现在我可以使用替换并逃脱所有标记,但那会很疯狂。有没有一种有效的方法来在vim中删除这样的代码块? (我知道如果我正确地做DRY,我可能不会遇到这个问题,但我并不总是编辑我自己的代码)

3 个答案:

答案 0 :(得分:5)

在这种情况下使用标记文本对象:

dat

要删除所有出现的标记,您可以同时使用:global:normal命令。例如:

:g/pat/normal dat

了解更多信息:

:h at
:h text-objects
:h :g
:h :norm

答案 1 :(得分:2)

在一般情况下(超出给定的例子):

  1. 使用this映射可以搜索视觉选择(比您想象的更有用)。
  2. 直观地选择( v V - 但不是 Ctrl-v )您要处理的文本。
  3. 搜索所选文本的其他实例: * 。这允许您在搜索文本的实例之间快速跳转( n N )。
  4. 删除(例如)4行: 4dd
  5. 或者,在步骤3之后,删除所有出现的搜索文本::s/ Ctrl-r / //g

    在具体情况下,我会这样做:

    1. 将光标放在要删除的块的第一行的开头:<div class="caption">
    2. v $ * - 选择行尾并搜索所选文字
    3. dat (正如彼得建议的那样) - 实际上删除了包含标签
    4. n。直到没有更多匹配。
    5. 手动逐步执行结果(使用 n )可以确保在执行此操作之前确实要删除当前匹配(使用)。

答案 2 :(得分:1)

SearchHighlighting plugin这样的插件提供了可视模式映射来搜索当前选择的文本(还有更多此类插件;插件页面包含指向其他插件的链接。)

然后,使用:substitute删除所有匹配,或者最近的Vim(7.4)版本提供gn命令,该命令将搜索/操作下一个匹配项最后使用的搜索模式。总之,您将获得以下工作流程:

  1. 选择文本块;在您的示例中,at文本对象非常方便:vat
  2. 搜索选择:*
  3. 全部删除:%s///或:
  4. 转到下一个匹配项并将其删除:dgn