如何防止操作后自动退出视觉模式?
How do I prevent auto visual mode exit after an action?
我想防止退出视觉模式,尤其是当我选择了一个视觉块并将其粘贴到某处时。
一个示例用例是:
我在两个文件之间复制并粘贴了一段代码,但我想在粘贴后修复缩进。我不想再次重新选择代码块然后修复缩进。
I want to prevent exitting visual mode
你不能。在可视模式下执行命令后,您必须将其保留为正常模式。
I don't want to reselect the block of code once again
An example use case is: I copy and paste a block of code
在你的情况下,它是一个新块,因此不能“重新selected”。所以你真的必须自己select。使用 1v
(或 1vl
if set selection=exclusive
)来简化此操作。
您也可以随时创建映射。例如
nnoremap <Leader>p pg`[1v
实际上,您可以使用 gv
选项“重新select”之前 select 编辑的视觉块。我实际上使用以下选项在缩进块后保持可视模式。
vnoremap < < gv
vnoremap > > gv
基本上,它是 visual 模式下的映射 no recursive maping (vnoremap) 将 <
命令映射到 < gv
。换句话说,它在之后应用 <
和 gv
。因此,您可以采取行动并“重新select”之前select编辑的视觉块。
编辑:
这是另一个示例,映射 Alt+k
和 Alt+j
上下移动 selected 视觉块,同时“重新select”视觉块。
vnoremap <A-k> :m '<-2<CR>gv=gv
vnoremap <A-j> :m '>+1<CR>gv=gv
我想防止退出视觉模式,尤其是当我选择了一个视觉块并将其粘贴到某处时。 一个示例用例是: 我在两个文件之间复制并粘贴了一段代码,但我想在粘贴后修复缩进。我不想再次重新选择代码块然后修复缩进。
I want to prevent exitting visual mode
你不能。在可视模式下执行命令后,您必须将其保留为正常模式。
I don't want to reselect the block of code once again
An example use case is: I copy and paste a block of code
在你的情况下,它是一个新块,因此不能“重新selected”。所以你真的必须自己select。使用 1v
(或 1vl
if set selection=exclusive
)来简化此操作。
您也可以随时创建映射。例如
nnoremap <Leader>p pg`[1v
实际上,您可以使用 gv
选项“重新select”之前 select 编辑的视觉块。我实际上使用以下选项在缩进块后保持可视模式。
vnoremap < < gv
vnoremap > > gv
基本上,它是 visual 模式下的映射 no recursive maping (vnoremap) 将 <
命令映射到 < gv
。换句话说,它在之后应用 <
和 gv
。因此,您可以采取行动并“重新select”之前select编辑的视觉块。
编辑:
这是另一个示例,映射 Alt+k
和 Alt+j
上下移动 selected 视觉块,同时“重新select”视觉块。
vnoremap <A-k> :m '<-2<CR>gv=gv
vnoremap <A-j> :m '>+1<CR>gv=gv