如何将多行插入寄存器?


43

我想在vim中的单个寄存器中提取多行,以轻松地将不同的文本模板粘贴到文档中。

例如,“ iyy仅拉动当前行,如果我尝试以可视模式选择多行,则不会将其写入寄存器。

有什么建议么?


“如果我尝试以可视模式选择多行,则不会将其写入寄存器。” <-真的吗?为我工作...
Billy ONeal

我也是...
ulidtko 2011年

啊,好吧,我尝试过“ iyv,傻傻的我。应该是Vjjj” iy,就像提到的ulidtko一样。
ryz 2011年

Answers:


58

用于3Y将3行拖入默认寄存器;"i3Y拉入登记册i。

另外,我最喜欢的方法不是计算我要拉线的行,而是通过V和移动命令以可视模式选择它们,然后单击y以拉线或拉"_y入寄存器。

另外,我刚刚尝试在“可视行”模式下选择多行,然后拉入非默认寄存器,例如Vjjj"oy-即可。


1
+1-但是V是视觉线模式,v是视觉模式。
Billy ONeal

好吧好吧 视觉线模式。%)
ulidtko 2011年

1
很高兴接受它,这对我来说是最快的方式。
ryz 2011年

24

在文件中的任何位置,您都可以使用以下内容。

:2,5y a

扬克线2 - 5 到寄存器一

:7pu a

粘贴在第7行下方注册。


1
问的问题是:“如何将多行插入寄存器?”请说明这些命令如何与寄存器一起使用。
斯科特,

希望我的编辑能够满足您的要求。
2013年

抱歉,没有。该问题反复明确提到“注册”,称为“轻松粘贴不同的文本模板”,并给出了使用非默认寄存器的示例。
斯科特,

3
@斯科特,我很抱歉。您为什么不只是说:“老兄,用:reg检查您的方法。您会发现它不起作用。” 我会一直想,“哇,我的坏人”。
2013年

1
正在寻找一种方法来将who文件拖入register +以复制到系统剪贴板。:%y +做到了,谢谢。
AlexMA 2014年

10

使用m标记的开始,具有缓冲的域名(所以你可以键入mx)。将光标向下移动到要停止复制的位置,然后键入y'x(或者d'x如果要剪切和粘贴)。然后将移到要粘贴的位置,然后键入p

Vim命令备忘单


您确定不是v不是m吗?
Billy ONeal

@BillyONeal'v'启动可视模式,并允许您执行相同的操作,其中'm'用于“标记”区域。
Nifle

6

您在命令前加上数字以获取要操作的行数。您还可以使用“文本对象”(例如“]”作为块,而“)”作为段落)-这将在上下文中作用于多行-默认值通常是单行。例如,"r5yy将从光标开始的五行拉入“​​ r”寄存器。(或者您可以键入:.,+4y r以在ex模式下执行相同的操作。)您也可以将数字与文本对象组合;"r10y)


1

如果是最后一次搜索,则可以拉出多行。

例如,给定以下多行非贪婪模式

/start\_.\{-}end/norm gn"iy

那么您就会在自己的寄存器中找到抽头的多行模式(在start和之间end@i(按打印echo @i)。

相关:如何打印多行匹配?在Vi

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.