Vim在放置文本时立即更改文本

时间:2011-11-23 16:38:25

标签: vim substitution

最近我一直在y anking和p发布了许多需要稍微修改的代码(通常只是一个简单的替换)。我可以在粘贴之后手动选择它,或者对于更长的块,我想我可以查看粘贴的行数(20 new lines)并使用20:s...,但鉴于它是vim,它似乎在那里应该是一种更简单/更快捷的方法。

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

2 个答案:

答案 0 :(得分:8)

执行p后,[]标记会立即引用粘贴区域的起始和结束行号(同时适用于y} )。有关说明,请参阅'[']的帮助。

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

答案 1 :(得分:3)

Chris Morgan已经发布了最佳解决方案。但是你也可以直接对寄存器中的文本进行某种操作。 yank的默认寄存器为",因此您可以执行以下操作:

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

然后粘贴更改的寄存器文本。由于寄存器中的文本是具有一个开始模式(^)和一个结束($)的单个字符串,因此与多行寄存器文本中的行上下文相关的操作不那么容易。但仍然有用。

以为我会把它扔出去,因为这是我有时会这样做的。