Neovim/Vim中类似VSCode多光标编辑的代码格式转换快捷键
我有如下代码块:
first_red_check = MAX(first_red_check), first_check = MAX(first_check), first_red_check_old = MAX(first_red_check_old), first_check_old = MAX(first_check_old), min_first_check = MAX (min_first_check), min_first_red_check = MAX (min_first_red_check), days_until_first_red = MAX (days_until_first_red)
希望将每行中等号左侧的内容移至该行末尾,转换为如下格式:
MAX(first_red_check) AS first_red_check MAX(first_check) AS first_check
请问Neovim或Vim中是否有类似VSCode多光标编辑的快捷操作来实现该需求?
当然有,Vim/Neovim里有几种方式能实现类似VSCode多光标批量编辑的效果,甚至有些方法比多光标更高效:
方法一:原生多光标(Neovim 0.9+ 专属)
- 把光标放到第一行左侧变量的开头(比如
first_red_check的首字母) - 按
v进入可视模式,用t=快速选中到等号前的整个变量名 - 按
g<C-n>(按住Ctrl+g+n),自动选中所有行里结构一致的左侧变量 - 按
y复制这些选中的变量名 - 按
<Esc>退出多光标模式,按$把光标移到第一行末尾 - 再按
g<C-n>选中所有行的末尾位置 - 按
a进入插入模式,输入AS,然后按<C-r>"粘贴刚才复制的变量名 - 最后选中所有行末尾的逗号,按
x删掉即可
方法二:正则全局替换(Vim/Neovim通用,最快捷)
直接在命令行模式输入这条替换命令,一键完成所有修改:
:%s/\v^(\w+)\s*=\s*(MAX\s*\(.+\)),?/\2 AS \1/g
这条命令会匹配每行左侧的变量名、中间的等号和右侧的MAX表达式,自动把MAX表达式前置,加上AS和原变量名,同时去掉末尾的可选逗号。
方法三:宏录制(Vim/Neovim通用,适合复杂重复操作)
- 光标移到第一行开头,按
qa开始录制宏(操作会存在寄存器a里) - 依次执行:
v=t(选中到等号前的变量)→y(复制)→$(跳到行尾)→x(删除逗号)→a AS(插入AS和空格)→<C-r>"(粘贴变量名)→j(跳到下一行) - 按
q停止录制 - 按
@a执行一次宏,有N行需要修改就按N@a(比如7行就按7@a)
内容的提问来源于stack exchange,提问作者theotechnic
相关产品推荐
相关产品推荐

