Vim:如何选择已粘贴的块

10

是否有一种 vim 命令可以直接选择刚刚粘贴的文本块?

注:我知道使用 gv 可以在退出可视模式后重新选择一个块,但这并不适用于此情况。


嗯...我在想是否可以添加一个autocmd以便在您粘贴之后运行? - Yzmir Ramirez
3个回答

15

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

nnoremap <expr> gV    "`[".getregtype(v:register)[0]."`]"

[] 标记指向最后一次更改的起点和终点,v:register 被设置为上次使用的寄存器(这是粘贴命令使用的寄存器,除非你例如复制了一些东西),[0] 只选择寄存器类型的第一个字节(因为对于块状寄存器,它返回 <C-v>{width}),寄存器类型只有一个字节,与在正常模式下调用视觉模式所使用的按键完全相同。

我在 SO 上看到过这个解决方案,你可能想搜索一下以获取一些替代方法。


2
我相信这就是你要找的帖子:https://dev59.com/RW855IYBdhLWcg3wfUZM - Peter Rincker
1
getregtype([{regname}]) 如果未指定 {regname},则使用 v:register。 因此,getregtype()[0] 也可以工作。 - kev

2

0

我一直在我的vimrc中拥有以下地图:

nnoremap <leader>p `[V`]
nnoremap <leader>[ `[V`]<
nnoremap <leader>] `[V`]>

它们执行以下操作:

  • 可视化选择最近粘贴的块
  • 取消最近粘贴块的缩进
  • 缩进最近粘贴的块

我可能使用缩进更多次数,而不是选择。


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