You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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+ 专属)

  1. 把光标放到第一行左侧变量的开头(比如first_red_check的首字母)
  2. 按v进入可视模式,用t=快速选中到等号前的整个变量名
  3. 按g<C-n>(按住Ctrl+g+n),自动选中所有行里结构一致的左侧变量
  4. 按y复制这些选中的变量名
  5. 按<Esc>退出多光标模式,按$把光标移到第一行末尾
  6. 再按g<C-n>选中所有行的末尾位置
  7. 按a进入插入模式,输入AS,然后按<C-r>"粘贴刚才复制的变量名
  8. 最后选中所有行末尾的逗号,按x删掉即可

方法二:正则全局替换(Vim/Neovim通用,最快捷)

直接在命令行模式输入这条替换命令,一键完成所有修改:

:%s/\v^(\w+)\s*=\s*(MAX\s*\(.+\)),?/\2 AS \1/g

这条命令会匹配每行左侧的变量名、中间的等号和右侧的MAX表达式,自动把MAX表达式前置,加上AS和原变量名,同时去掉末尾的可选逗号。

方法三:宏录制(Vim/Neovim通用,适合复杂重复操作)

  1. 光标移到第一行开头,按qa开始录制宏(操作会存在寄存器a里)
  2. 依次执行:v=t(选中到等号前的变量)→ y(复制)→ $(跳到行尾)→ x(删除逗号)→ a AS (插入AS和空格)→ <C-r>"(粘贴变量名)→ j(跳到下一行)
  3. 按q停止录制
  4. 按@a执行一次宏,有N行需要修改就按N@a(比如7行就按7@a)

内容的提问来源于stack exchange,提问作者theotechnic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 08:27:24