在vim中有没有办法实现选中区域向上或向下复制的功能?
你可以在你的vim配置文件(.vimrc/init.vim)中添加如下可视模式映射,即可实现和VSCode一致的选中区域上下复制功能,全程保持可视模式不退出,复制后自动对齐缩进:
对齐VSCode快捷键的方案
" 选中区域向下复制,对应VSCode Alt+Shift+下方向键 vnoremap <A-S-j> :t '><CR>gv=gv " 选中区域向上复制,对应VSCode Alt+Shift+上方向键 vnoremap <A-S-k> :t '<-1<CR>gv=gv
如果你的终端Alt键存在映射冲突,也可以自定义为和现有移动逻辑匹配的快捷键,比如:
" 选中区域向下复制 vnoremap <leader>J :t '><CR>gv=gv " 选中区域向上复制 vnoremap <leader>K :t '<-1<CR>gv=gv
命令逻辑说明
:t是vim原生的行复制命令,等同于:copy,后方参数为粘贴目标的行位置'>代表可视选区最后一行的行标记,:t '>即把选中内容复制到选区最后一行的下方'<代表可视选区第一行的行标记,:t '<-1即把选中内容复制到选区第一行的上方gv会重新选中上一次的可视选区,避免复制后退出可视模式=gv会对新生成的选区自动执行缩进对齐,且对齐后保持选中状态
配置添加完成后,执行:source 你的配置文件路径或者重启vim即可生效。
内容的提问来源于stack exchange,提问作者Fahim Emroz
相关产品推荐
相关产品推荐

