Vim-在拖动到标记时防止光标移动

Vim-在拖动到标记时防止光标移动,vim,copy-paste,Vim,Copy Paste,我通常使用标记在Vim中剪切/粘贴 要在第4行和第12行之间拖动文本,请执行以下操作: 将光标移到第4行 键入mx以放置一个名为x的标记 将光标移到第12行 键入y'x在第4行和第12行之间拖动文本 完成此操作后,光标移回第4行 有没有办法使光标保持在原来的位置(而不移回标记) 如果有人有更好的方法做同样的事情,那也太好了 提前谢谢 更新: 我用FDinoff的答案创建了一个让我成为快乐露营者的地图: nnoremap YY y'x<C-O> nnoremap YY y'x 这

我通常使用标记在Vim中剪切/粘贴

要在第4行和第12行之间拖动文本,请执行以下操作:

  • 将光标移到第4行
  • 键入
    mx
    以放置一个名为x的标记
  • 将光标移到第12行
  • 键入
    y'x
    在第4行和第12行之间拖动文本
  • 完成此操作后,光标移回第4行

    有没有办法使光标保持在原来的位置(而不移回标记)

    如果有人有更好的方法做同样的事情,那也太好了

    提前谢谢


    更新:

    我用FDinoff的答案创建了一个让我成为快乐露营者的地图:

    nnoremap YY y'x<C-O>
    
    nnoremap YY y'x
    
    这将从光标拖动到名为x的标记,然后将光标返回到原来的位置


    这已经为我节省了大量的时间。再次感谢

    你跳到第4行的原因是因为你在用向后的动作猛拉

                                *y* *yank*
    ["x]y{motion}       Yank {motion} text [into register x].  When no
                characters are to be yanked (e.g., "y0" in column 1),
                this is an error when 'cpoptions' includes the 'E'
                flag.
    
    有问题的动议是哪一个跳到x标记。光标移动到拉伸零件的开始处,在本例中是第4行,因为您从第12行拉伸

    不管你能做什么

  • 使用用于ex命令行模式的yank。范围为
    (当前行)到
    'x
    (标记x)。如果范围是向后的,我会问你是不是指另一个方向。这不会移动光标<代码>:,'xy

  • 或者你可以用威尔把你跳回到你最后一次跳出来的地方。(评论中提到了这一点。)

  • 或者您可以使用或
    `
    。这些命令将跳转到最后一个拖动文本的最后一个字符


  • 使用:
    `

    有关更多帮助,请参阅:

    :h ``
    :h CTRL-O
    

    y12G怎么样?

    这将从当前位置(第4行)猛拉到第12行。

    我在文档中看不到明显的方法,但在猛拉后按Ctrl-O键跳回到第12行是否足够?@andrewdotn-这是一个很好的开始(可能是一个足够的解决方案)。。。添加映射后,它将特别有用。谢谢(如果你想获得一些代表积分,请随意回答)。非常感谢。我感谢你的解释和选择!我不认为这是“原因”,因为大多数美国佬的动作都不会移动光标。e、 g.yj-yl-y}。实际上,我是在搜索一个可以拖动并执行动作的命令时发现这篇文章的,这对像yf3/这样的复杂动作有时很有帮助。“我想你没有找到这样一个命令吧?”美国佬迈克尔谢珀将光标放在被猛拉的部分的开头。在您的所有示例中,光标都已经位于被拖动部分的开头。不,我不知道如何将光标放在拉伸零件的末端。这会起作用,但当你不知道要拉伸多少行时,通常会使用此工作流。我只是用第4行和第12行来解释这个场景。在现实生活中,4和12应该替换为“我通过在文件中导航选择的一些随机行号”。