【问题标题】:VIM to delete a range of lines into a registerVIM 将一系列行删除到寄存器中
【发布时间】:2013-04-19 23:22:54
【问题描述】:

我正在尝试将一系列行删除到寄存器a 中。这是实现这一目标的最简单方法吗?
:5,10d a

【问题讨论】:

  • 最简单是什么意思?

标签: vim vim-registers


【解决方案1】:

“最简单”的定义取决于你有什么,你想做什么

  1. 如果您有起始行号和结束号,例如

    :2349,5344d a
    

    是最简单的方法。

    你不必考虑像

    这样的问题

    “我的光标在哪里?”

    "要删除多少行?" ...

  2. 如果您要删除少量行,尤其是它们在同一屏幕上。 (您可以使用 relative-linenumber。)例如:"a5dd 但您必须将光标移动到要删除的第一行。这也可以通过选项 1 来完成:5:d a<CR>(vim 会自动将其翻译成.,.+5d a<CR>

  3. 如果你只知道删除的第一行,并且通过阅读文本找到要删除的最后一行,(当然,少量的行)你可以按V,然后按@987654326 @通过阅读,到达删除结束边框时,按"ad

  4. 如果您问题中的“范围”是 vim 中的“范围”概念,第一个选项会更好。因为它可能是234,540,它可能是1;/foo/foo/,/bar/...:h range查看详情

所以回到我回答的第一句话,没有绝对最简单的方法。这完全取决于您拥有什么,以及您想做什么。

【讨论】:

    【解决方案2】:

    实现此目的的另一种方法是在视线模式下突出显示线条范围。 (Shift-V)

    然后在视线模式下输入"ad。这会将删除的行放入a 寄存器中。

    " 后跟一个寄存器,将下一个删除、拉取或放入该寄存器。

    下面是" (quote)的文档

                                                                *quote*
    "{a-zA-Z0-9.%#:-"}  Use register {a-zA-Z0-9.%#:-"} for next delete, yank
                        or put (use uppercase character to append with
                        delete and yank) ({.%#:} only work with put).
    

    另一个删除多行并将其放入寄存器的示例。要删除 6 行并将它们放入寄存器中,您可以进入该行并输入 "a6dd。这会将 6 个已删除的行放入寄存器 a

    【讨论】:

      猜你喜欢
      • 2011-09-07
      • 2013-08-25
      • 2013-10-26
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2014-07-26
      • 2010-12-02
      相关资源
      最近更新 更多