在不移动光标的情况下粘贴到 VIM 中的文件末尾

Paste to end of the file in VIM without moving cursor

在文本文档中,我[通过视觉或其他方式] 选择几行,用 d 剪切它们...我想将这些行粘贴到文件末尾而不移动光标。有没有相对简单的方法来做到这一点?

您可以定义一个标记当前位置的映射,使用 :$put 粘贴到缓冲区的末尾,然后使用标记 returns 粘贴到原始光标位置。

这是有效的,因为 :put 允许行号前缀(最后一行可以表示为 $)。来自 :help put:

:[line]pu[t] [x]        Put the text [from register x]

这会将其映射到 <leader>p:

:nnoremap <leader>p :mark '<cr>:$put<cr>`'

它在光标处设置'标记,粘贴在末尾,然后returns到'标记`

有几种方法:

标记

设置标记,粘贴,然后跳回标记

m':$pu<cr>``

可视模式

可视化 select 你的行,复制它们,追加,然后恢复可视化 selection(可选删除)

y:$pu<cr>gv

附加到文件

在视觉上 select 您的行,使用 :w 附加到文件,然后重新加载文件。 (注意:会将光标移动到可视化 selected 行的开头)

:w >><cr>:e!

创建你自己的command/mapping

您可以创建自己的命令 and/or 映射,它将使用 winsaveview()winrestview() 追加然后恢复游标。

取决于你的意思"without moving the cursor"。

这将粘贴到当前文件的底部,然后允许您从剪切行的位置继续。

  1. 拆分 window 与 :split
  2. 使用 shift+g
  3. 移至底部
  4. 粘贴 p
  5. 关闭重复的拆分视图(zz 或 :q)

不喜欢分屏的可以在G后ctrl+o跳回

  1. 使用 shift+g
  2. 移至底部
  3. 粘贴 p
  4. ctrl+o
  5. 跳回

使用上次跳跃的隐式标记

您可以使用隐式标记(例如')将您的光标return移动到它在最后一次跳转之前占据的位置。例如:

Gp''

这将 (G)o 到文件末尾,(p)粘贴最后一行之后的内容,然后 return 到您键入时的位置 G .