我使用vim-gtk
剪贴板粘贴就像粘贴寄存器的内容一样简单"+
。对于每一行,我都可以用剪贴板内容替换它,如下所示:
1. V
2. d
3. o
4. <ESC>
5. pasting from clipboard (bound to some shortcut)
我在这里看到的缺点如下:
- 在正常模式和插入模式之间切换(步骤 3)
- 用垃圾内容弄乱寄存器(步骤 2)
那么用剪贴板内容替换某一行的惯用方法是什么?
答案1
你可以做几件事。我不知道其中有没有更加地道,但它们更短。
dd
比 更符合地道用法Vd
,因此我建议改用 。ddO<C-r>+<esc>
比 短一点ddO<esc>"+p
你可以这样做
"+pkdd
,但这实际上并不会更短。不过它确实完全处于正常模式,这很好。您可以直接执行
V"+p
,这是无需映射的最短路径。
当然,如果你经常这样做,你总是可以使用以下任何一种方法进行自己的映射。例如:
nnoremap <leader>p V"+p
<leader>
只是一个让你更方便地定义自己的映射的工具。例如,如果你要这样做:
nnoremap p V"+p
那么你就失去了调用默认的能力p
。Leader 基本上是你自己映射的命名空间。更多信息可以在这里找到。
答案2
我经常需要这个,所以我编写了一个插件来简化并实现最大速度:ReplaceWithRegister。
此插件提供二合一gr
命令,用寄存器的内容替换 {motion} / text 对象、整行或当前选择所覆盖的文本;旧文本被删除到黑洞寄存器中,即它消失了。它透明地处理许多极端情况,并允许通过标准命令快速重复.
。如果您不喜欢它,其页面有替代方案的链接。
您的用例(用剪贴板内容替换一行)将是"+grr
。