【问题标题】:Paste in Vim without moving the cursor在 Vim 中粘贴而不移动光标
【发布时间】:2021-05-13 12:28:14
【问题描述】:

我经常需要将一些东西粘贴到几个相邻的行中,在相同或相似的位置。每次移动到下一行时,都必须将光标移回粘贴内容的开头,这很痛苦。如何在不移动光标的情况下粘贴(如命令“p”)?或者,如何快速让光标回到粘贴前的位置?

【问题讨论】:

    标签: vim


    【解决方案1】:

    不破坏寄存器的最安全方法是执行以下操作:

    p`[
    

    如果你想创建一个快捷方式,只要使用任何适合你的 vim 的 map 函数,例如:

    noremap p p`[
    

    【讨论】:

    • 注意重复使用 .映射被忽略。这是一个 vim 错误,还是有办法尊重映射?这在使用 P 而不是 p 时特别有用,因为 Shift-P 难以重复
    • @pixelbeat 我认为有一个 repeat.vim 可以使 .更强大/更智能。可能会对你有所帮助。
    • 我对此的看法是nnoremap p P`[j:这会粘贴之前,将光标保持在同一位置,然后向下移动一行。只要内容对齐,您就可以注释代码、在连续行上添加/附加内容等,所有这些都可以通过混搭 p 键来实现。非常灵活。
    • 在重复之前的P 时,有什么方法可以让. 尊重这个重映射?因为目前当我运行nnoremap P P`[ 时,我得到的正是我想要的P 行为,但是如果我在之后点击. 而不是另一个P,它只会重新运行原始P。 :(
    • 在插入模式下<ctrl+o> 之后是否可以使此映射适用于p 键?通过这个映射,我在插入模式 ctrl+op 中获得了额外的 '[]'
    【解决方案2】:

    每当我有一系列步骤要重复多次时,我都会录制一个宏,这在 Vim 中非常容易。一般的方法是

    1. 将光标定位到您要进行第一次更改的位置。
    2. 输入 qx 开始记录击键。
    3. 进行第一次编辑。
    4. 将光标移动到第二次编辑应该开始的位置。
    5. 再次按 q 退出录制。
    6. 键入@x 以重播宏并进行下一次编辑。 @ 命令会进行计数,因此您可以使用一个命令多次重复编辑。

    因此,在您的情况下,记录宏的整个击键序列可能是

    qxp`[jq
    

    5@x 重播五次,共进行 6 次更改。

    请注意,第一个 q 之后的字符是用于记录宏的寄存器,它可以是任何字母,而不仅仅是 x。请注意您的宏不会将文本拉入当前正在录制的寄存器中,这会使事情变得一团糟!

    宏可以任意长和复杂。它们可以包含 Ex 模式命令,甚至可以调用其他宏。

    【讨论】:

      【解决方案3】:

      您可以通过按 CTRL-o 快速回到粘贴前的位置。这通常会移回上一个光标位置。

      我正在将整个大型文档中的线条粘贴到 3 个标记之一(围绕线条移动到标题下方)。我发现最快的方法是:

      'ap
      

      后跟 CTRL-o

      【讨论】:

        【解决方案4】:

        您可以在不将行保留在正确键盘布局中的情况下执行此操作(除了 p ofc):

        pg;
        

        g; 转到更改列表中列出的上一个位置

        更多信息:

        :help changelist
        :help changes
        

        【讨论】:

          【解决方案5】:

          'k' ? (如向上箭头所示)

          如果您使用 'p' 将文本粘贴到当前行下方,则光标将位于粘贴内容的第一行。在命令模式下键入“k”会将您带到粘贴内容开头上方的行。

          【讨论】:

          • p 在光标后粘贴。它不必在下一行。这取决于您如何选择要复制的块(v 与 shift-v)。 -1
          猜你喜欢
          • 1970-01-01
          • 2011-03-28
          • 1970-01-01
          • 2014-07-04
          • 1970-01-01
          • 2023-04-05
          • 1970-01-01
          • 1970-01-01
          • 2018-01-10
          相关资源
          最近更新 更多