IdeaVim执行:m移动命令后无法用gv重新选中选区的问题
在IdeaVim中实现可视模式下移动代码块并保留选区
问题出在IdeaVim对可视模式命令的自动范围处理上——当你在可视模式下触发以冒号开头的命令时,IdeaVim会自动在命令前插入'<,'>(当前可视范围),这会干扰原命令中'<和'>标记的解析,导致移动后gv无法正确恢复选区。
你可以通过以下两种方式解决:
方法1:清除自动添加的范围标记
在映射中加入<C-u>来清除IdeaVim自动插入的范围,确保命令按预期执行:
vnoremap J :<C-u>move '>+1<CR>gv=gv vnoremap K :<C-u>move '<-2<CR>gv=gv
方法2:使用execute命令解析标记
通过execute命令来包裹移动指令,避免自动范围的干扰:
vnoremap J :execute "move '>+1"<CR>gv=gv vnoremap K :execute "move '<-2"<CR>gv=gv
两种方法都能让你在移动代码块后,通过gv重新选中刚才的代码块,实现连续多次移动操作。
内容的提问来源于stack exchange,提问作者Antoine Barthes
相关产品推荐
相关产品推荐

