【问题标题】:Quick yanking in Vim在 Vim 中快速拉取
【发布时间】:2012-03-21 00:41:00
【问题描述】:

我经常发现自己处于这样的境地:

line i want to yank
.
.
.
[cursor position]

我想拉出该行并粘贴到[cursor position]

我正在使用[n]kY[n]jp 来做这件事。这是很多打字;)。之前,我使用的是:

:[line number]Y

然后粘贴,但这不适用于相对行号(relativenumber 选项)。

在相对数字为 ON 的情况下,进行这种拉/粘贴的最快方法是什么?

【问题讨论】:

  • 我认为[n]k爬行。如果您爬行,则必须向后爬行,但如果您跳转,则可以向后跳转:导航跳转列表,使用Control+o 表示旧版本,Control+i 表示新版本。

标签: vim editor editing


【解决方案1】:

如果线在视线范围内(在光标位置之前或之后),我通常只搜索它(?line i want),拉一下,然后转到``(回到上一个位置),然后p

【讨论】:

  • 或者用mm显式设置一个标记并用'm返回(m是我的首选临时标记标识符)。出于某种原因,我不信任以前的职位。
  • 你有选择的理由吗?在 / ?
  • @AndyRay 上一个 (?) 而不是下一个 (/),仅此而已。
【解决方案2】:

我会试试这个:

  • ?yank+Enter significant patten 向后搜索
  • yy
  • Ctrl+O
  • p

【讨论】:

  • +1 我经常使用CTRL-OCTRL-I,它们非常有用。
【解决方案3】:
 :/your desired search for the specific line/ y

 :N y

(其中N 是特定的行号)将复制特定的行(它也可以是一个范围)。现在你点击 p 来粘贴它。这样你就不会移动光标。

【讨论】:

    【解决方案4】:

    当要复制的行号已知时(无论是绝对的还是 相对),复制该行的一种方便方法是使用:copy 命令。例如,下面的 Ex 命令复制了四行 上面的行并将其粘贴到当前行的下方。

    :-4t.
    

    【讨论】:

    • 这太棒了。只是我的好奇心,在这种情况下 t 代表什么?
    • @nXqd: :t 只是:copy 的同义词(也有:co 的缩写形式)。运行 :help :copy 可以查看 Vim 文档中的相应部分。
    【解决方案5】:

    顺便说一句,如果我真的打算在任何当前打开的文件的任何地方重复我之前使用过的一行,那么我只需在输入几个起始字符后在插入模式下使用快捷方式^X^L .

    假设我想重复这一行,这在我的程序中经常出现:

    for (int i = 0; i < numChildren; i++) {
    

    然后我首先输入for (in,然后点击^X^L,Vim 会为我完成。 (实际上它是在等待我接受它;如果我再次输入^L,它会显示下一个选项。)

    查找^X^L,非常好用。

    :help ^X^L
    

    PS:作为单独的答案发布,因为您最初的问题是专门关于“yanking”的,从技术上讲,这是自动完成的。

    【讨论】:

      【解决方案6】:

      如果线路看不见(除了Manishanswer),我觉得它很方便

      • 通过输入:sp 分割屏幕,然后
      • 搜索要拉出的行
      • 拉出上半部分的图案,然后
      • 使用 CTRL-w-j 跳转到下方屏幕,光标仍按原样放置(在同一列中)当我:sp点亮缓冲区时。

      【讨论】:

        猜你喜欢
        • 2012-02-03
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 2020-12-17
        • 1970-01-01
        • 1970-01-01
        • 2010-10-10
        • 2011-10-08
        相关资源
        最近更新 更多