VIM将一系列行删除到寄存器中

时间:2013-04-25 21:52:01

标签: vim vim-registers

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

2 个答案:

答案 0 :(得分:10)

“最简单”的定义取决于您拥有什么,以及您想做什么

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

    :2349,5344d a
    

    是最简单的方法。

    你不必考虑像

    这样的问题

    “我的光标在哪里?”

    “将删除多少行?” ...

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

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

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

  5. 回到我的回答中的第一句话,没有绝对最简单的方法。这一切都取决于你拥有什么,以及你想做什么。

答案 1 :(得分:3)

实现这一目标的另一种方法是突出视线模式中的线条范围。 (移位-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