2011-11-23 44 views
7

最近我一直在y anking和p发出大量需要稍微改变的代码(通常只是一个简单的替换)。我可以手动选择它粘贴后,或更长的块,我想我可以看看粘贴的行数(20 new lines)和使用20:s...,但鉴于它是vim,似乎应该有一个更简单/更快的方式来做这个。Vim在放入文本之后立即修改文本

那么有没有办法选择或执行替代文本,因为它是p ut?

回答

8

后立即p的执行中,[]标记指的是粘贴区域的起始和结束行号(在此期间y也适用)。有关说明,请参阅'[']的帮助。

因此,您可以使用这些标记来形成工作范围:s,如:'[,']s///。这将在刚刚被抽出或粘贴的区域工作。当然,这并不短,但如果你关心它,你可以映射它。也许像nnoremap <Leader>p p:'[,']s/

+1

完美,谢谢。 vim可以做到的另一个例子就是你可以想象的一切。 – Kevin

3

克里斯摩根已经发布了最好的解决方案。但是你也可以直接对寄存器中的文本进行一些操作。拷贝文本的默认寄存器是",所以你可以这样做:

:let @" = substitute(@",'someword', 'somedifferentword','g') 

然后粘贴改变寄存器文本。因为寄存器中的文本是带有一个开始模式(^)和一个末尾($)的单个字符串,所以对于多行注册文本中与行上下文相关的操作不那么容易。但仍然可以有用。

只是想我会把它扔出去,因为这是我有时做的事情。

+0

也很高兴知道,谢谢。 – Kevin

相关问题