在vim中,如何直观地选择以前粘贴的文本

在vim中,如何直观地选择以前粘贴的文本,vim,Vim,我通常会选择一个块,然后在其他地方复制/剪切它,然后我发现自己总是格式化粘贴的文本,所以有没有一种方法可以快速直观地再次选择文本。每个修改缓冲区(和yanks)的命令都会在更改区域周围设置'[和']标记。因此,您可以通过以下方式重新格式化粘贴的块: `[v`]= 有些人甚至使用以下映射来重新选择上次修改的文本块: nnoremap <expr> gV '`[' . getregtype()[0] . '`]' nnoremap gV'`['.getregtype()[0].`'

我通常会选择一个块,然后在其他地方复制/剪切它,然后我发现自己总是格式化粘贴的文本,所以有没有一种方法可以快速直观地再次选择文本。

每个修改缓冲区(和yanks)的命令都会在更改区域周围设置
'[
']
标记。因此,您可以通过以下方式重新格式化粘贴的块:

`[v`]=
有些人甚至使用以下映射来重新选择上次修改的文本块:

nnoremap <expr> gV '`[' . getregtype()[0] . '`]'
nnoremap gV'`['.getregtype()[0].`'
使用此映射,您可以执行
gV=
并格式化刚刚粘贴的文本


但是,如果您有插件并且正在按行粘贴,则可以使用它提供的
=p
命令。这将粘贴文本,然后一次性重新格式化文本。它还提供了一些其他可选的粘贴命令
,例如将一个缩进级别粘贴得更深。

我使用的方法很简单。粘贴后,光标位于粘贴文本的开头。按V切换到视觉选择,按']转到粘贴的结尾

它们是三个按键。如果太长,则可以为p

map p pV'[
map P PV'[

对于视觉模式,
gv
是重新选择上一区域的标准方式

如果要在区域的起始位置和结束位置之间切换,只需按
o

正如其他答案所提到的,您可以在此重新选择的区域应用标准的
=
命令

在粘贴
p
p
后,它运行良好


优点是您不需要任何自定义映射。

如缩进和其他内容。尽管这可以通过
gg=G
实现。顺便说一句,你看到这个问题了吗?答:你应该试试
[p
]p
。可能不完全是我所要求的答案,维姆大师!