替换整个缓冲区的最有效方法?


10

目前,我有两种类似的方法可以用其他一些文本替换整个缓冲区(例如在剪贴板中)。

方法1:

  1. 删除所有行::%d

  2. 粘贴文字:("+P或类似文字:):put+

方法2:

  1. 直观地选择所有行:ggVG

  2. 粘贴文字:"+P

但是,我似乎找不到一种单指令射击的方式来做到这一点。我找到的最接近的是:change命令。但这似乎不适用于寄存器。当然,我可以创建一些功能和/或映射一个键来做到这一点。但是在进行所有这些自定义之前,我需要确保:

是否有一些内置命令将一系列行替换为其他文本?就像,您可以:%replace+用剪贴板中的文本替换整个缓冲区吗?


2
我什么都不知道,但是如果您经常这样做,为什么不创建映射/命令呢?
马特·博姆

5
嗯,1,$s/\_./\=@+不是解决方案:P,:%d|put+距离比较近,但还不尽然。
Runium

1
我忘了一个星号后点... 1,$s/\_.*/\=@+,其中\_.匹配任何字符,包括换行符。
Runium

2
是否必须重用缓冲区,还是可以启动一个新缓冲区?
200_success,2015年

3
我认为Sukminder :%d|put+符合要求。简短而令人难忘。另一个命令太不可思议了,难以记住和正确键入。
Lie Ryan

Answers:


2

您可以ggvG<CTRL-G>直观地选择整个缓冲区并输入Select-mode。这是用您计划键入的文本替换缓冲区的最简单方法。您甚至可以使用Select-mode映射:smap来解决您的问题。


0

用剪贴板替换整个缓冲区的一种方法是通过外部命令,例如:

:%!pbpaste
:%!echo my_text

另请参阅:Mac OS X剪贴板共享

或使用替代:

:%s/\_.*/\=@+/
:%s/\_.*/my text/

或者使用:%d|put+(如注释中所建议)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.