用剪贴板内容替换整行的惯用方法

用剪贴板内容替换整行的惯用方法

我使用vim-gtk剪贴板粘贴就像粘贴寄存器的内容一样简单"+。对于每一行,我都可以用剪贴板内容替换它,如下所示:

1. V
2. d
3. o
4. <ESC>
5. pasting from clipboard (bound to some shortcut)

我在这里看到的缺点如下:

  1. 在正常模式和插入模式之间切换(步骤 3)
  2. 用垃圾内容弄乱寄存器(步骤 2)

那么用剪贴板内容替换某一行的惯用方法是什么?

答案1

你可以做几件事。我不知道其中有没有更加地道,但它们更短。

  1. dd比 更符合地道用法Vd,因此我建议改用 。ddO<C-r>+<esc>比 短一点ddO<esc>"+p

  2. 你可以这样做"+pkdd,但这实际上并不会更短。不过它确实完全处于正常模式,这很好。

  3. 您可以直接执行V"+p,这是无需映射的最短路径。

当然,如果你经常这样做,你总是可以使用以下任何一种方法进行自己的映射。例如:

nnoremap <leader>p V"+p

<leader>只是一个让你更方便地定义自己的映射的工具。例如,如果你要这样做:

nnoremap p V"+p

那么你就失去了调用默认的能力p。Leader 基本上是你自己映射的命名空间。更多信息可以在这里找到

答案2

我经常需要这个,所以我编写了一个插件来简化并实现最大速度:ReplaceWithRegister

此插件提供二合一gr命令,用寄存器的内容替换 {motion} / text 对象、整行或当前选择所覆盖的文本;旧文本被删除到黑洞寄存器中,即它消失了。它透明地处理许多极端情况,并允许通过标准命令快速重复.。如果您不喜欢它,其页面有替代方案的链接。

您的用例(用剪贴板内容替换一行)将是"+grr

相关内容