Vim如何在插入模式下修改刚输入的文本?

7
最近我一直在输入和放置很多需要稍作修改的代码(通常只是一个简单的替换)。它粘贴进来后我可以手动选择它,或者对于较长的块,我可以查看粘贴的行数(20 new lines),然后使用20:s...,但考虑到它是vim,似乎应该有更简单/更快的方法来完成这个任务。所以,在输入时是否有一种方式可以选择或执行文本的替换呢?
2个回答

8

执行p后,[]标记将指向已粘贴区域的起始行号和结束行号(在执行y时也适用)。请参考'[']的帮助以获得解释。

因此,您可以使用这些标记形成:s操作的范围,如:'[,']s///。这将作用于刚刚复制或粘贴的区域。虽然不是很短,但如果您在意,可以映射它。例如:nnoremap <Leader>p p:'[,']s/


1
太好了,谢谢。这是另一个例子,说明vim可以做到你能想象到的一切。 - Kevin

3

克里斯·摩根已经发布了最佳解决方案。但是您也可以直接在寄存器中对文本进行某些操作。复制的默认寄存器为",因此您可以执行以下操作:

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

然后粘贴修改后的注册表文本。对于多行注册表文本中与行上下文相关的操作不太容易,因为注册表中的文本是一个单一字符串,有一个开始模式(^)和一个结束模式($)。但仍然可以有用。

只是想提一下,因为这是我有时会做的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接