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

如何在Vim中为可视化选中的多行区块首尾添加文本?已有单行方案求多行方法

解决Vim可视化多行批量添加首尾文本的问题

嘿,我明白你想要实现的效果——在Vim里可视化选中多行区块,给每行的选中部分批量加上前缀\[ 和后缀 \]。你的单行命令已经很棒了,只需要做一点调整就能支持多行场景,下面分两种常见情况给你方案:

情况1:选中多行的部分内容(非整行)

把你的原命令修改成这样:

autocmd BufEnter *.tex,*.html vmap bb :'<,'>s/\%V\(.\{-}\)\%V/\\[ \1 \\]/<CR>

关键修改点说明:

  • :'<,'>:这是Vim自动填充的可视化选中范围标记,确保替换操作作用在你选中的所有行上,而不是只处理当前行
  • \%V\(.\{-}\)\%V:用非贪婪匹配.\{-}替代原来的\S.*\S,可以精准匹配选中区域内的所有内容(包括前后空格),同时\%V标记限定了替换只在可视化选中的范围内生效
  • \1:引用捕获组里的选中内容,和原命令的\0效果类似,但用捕获组更清晰可控

情况2:选中多行的整行内容

如果你的需求是给整行批量加前缀后缀,这个场景可以用更简洁的命令:

autocmd BufEnter *.tex,*.html vmap bb :'<,'>s/^/\\[ /<CR>:'<,'>s/$/ \\]/<CR>

逻辑说明:

  • 第一个替换:s/^/\\[ /:给选中每行的开头添加\[
  • 第二个替换:s/$/ \\]/:给选中每行的结尾添加 \]
  • 两条命令用<CR>连接,执行时会连续完成两个操作,一步到位

测试小技巧

你可以随便打开一个.tex或.html文件,选中多行(部分内容或整行),按下bb就能看到效果啦。如果需要调整前缀后缀,直接修改命令里的\\[ 和 \\]部分就行,注意转义符\不要丢哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:40:15