vim:如何选择粘贴的块

vim:如何选择粘贴的块,vim,Vim,是否有vim命令直接选择刚粘贴的文本块 另外,我知道如何在退出视觉模式后重新选择块。它不适用于这种情况。如果要在粘贴之后(在更改任何其他内容之前)选择它,请使用 nnoremap gV“`[”.getregtype(v:register)[0]。“`] [和]标记最后一次更改的开始和结束点,v:register设置为使用的最后一个寄存器(这是用于粘贴命令的寄存器,除非您(例如)拖动某个对象),[0]仅选择寄存器类型的第一个字节(这是必需的,因为对于块寄存器,它返回{width})和寄存器类型为

是否有vim命令直接选择刚粘贴的文本块


另外,我知道如何在退出视觉模式后重新选择块。它不适用于这种情况。

如果要在粘贴之后(在更改任何其他内容之前)选择它,请使用

nnoremap gV“`[”.getregtype(v:register)[0]。“`]
[
]
标记最后一次更改的开始和结束点,v:register设置为使用的最后一个寄存器(这是用于粘贴命令的寄存器,除非您(例如)拖动某个对象),
[0]
仅选择寄存器类型的第一个字节(这是必需的,因为对于块寄存器,它返回
{width}
)和寄存器类型为一个字节,与在正常模式下调用可视模式时应使用的按键相同


我在某处看到了此解决方案,因此,您可能希望搜索它以获得一些替代方案。

我的vimrc中永远有以下地图:

nnoremap <leader>p `[V`]
nnoremap <leader>[ `[V`]<
nnoremap <leader>] `[V`]>
nnoremap p`[V`]
nnoremap[`[V`]<
nnoremap]`[V`]>
他们的工作如下:

  • 直观地选择最近粘贴的块
  • 缩进最近粘贴的块
  • 缩进最近粘贴的块

我可能会使用缩进图而不是选择图。

在我的例子中,我有以下地图:

:nnoremap gp `[v`]
经过更多研究,我认为更好的解决方案是: "

nnoremap gp'`['.strpart(getregtype(),0,1)。'`]

Hmm…我想知道你是否可以在粘贴后添加一个
autocmd
来运行?我相信这就是你正在寻找的线程:
getregtype([{regname}])
如果没有指定{regname},则使用
v:register
。因此,
getregtype()[0]
也可以工作。
:nnoremap gp `[v`]
nnoremap <expr> gp '`[' . strpart(getregtype(), 0, 1) . '`]'