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

如何在Vim/Nvim中对不同长度行块进行复制粘贴编辑?

在Vim/Neovim中实现多行SQL列的批量格式化

不用复杂正则,有两种简单的操作方式可以实现你要的效果——把单列名改成sum(列名) as 列名的格式:

方法一:块可视化+复制粘贴组合操作

假设你的初始SQL列是这样的:

user_id
order_amount
total_price

操作步骤:

  1. 光标移到第一行开头,按Ctrl+v进入块可视化模式,上下移动光标选中所有需要处理的行。
  2. 按大写I进入行首插入模式,输入sum(,按Esc,所有行的开头都会自动加上sum(。
  3. 再次用Ctrl+v选中所有行的末尾(可以先按$跳到第一行尾,再上下选行),按大写A进入行尾插入模式,输入) as ,按Esc,现在每行变成sum(user_id) as 这样的格式。
  4. 再次进入块可视化模式,选中所有行里的原始列名(比如从sum(后面到)前面的部分),按y复制。
  5. 最后用Ctrl+v选中所有行的) as 后面的空白位置,按p粘贴,所有行就变成sum(user_id) as user_id了。

方法二:宏录制快速重复操作

如果行数较多,宏录制会更高效:

  1. 光标定位到第一行开头,按q q(第一个q是开始录制,第二个q是指定寄存器)。
  2. 依次执行:
    • yiw:复制当前列名(Vim会自动识别下划线连起来的单词)
    • I sum(:行首插入sum(,按Esc退出插入模式
    • $ a ) as :跳到行尾,插入) as ,按Esc
    • p:粘贴刚才复制的列名
    • j:跳到下一行,准备处理下一个
  3. 按q停止录制。
  4. 现在按@ q就能处理下一行,要是有N行需要处理,按N@q直接批量执行(比如已经处理了第一行,剩下3行就按3@q)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:05:21