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

如何用Vim宏或快捷键在包围字符内插入空格?

在Vim中给包围符内快速插入空格的方案

原生Vim映射(无需插件)

直接在~/.vimrc或init.vim里添加自定义映射和函数,一键完成操作:

nnoremap <leader>s :call AddSpaceInsideBrackets()<CR>
function! AddSpaceInsideBrackets()
    " 给左括号后加空格
    normal! f[ i <Space><Esc>
    " 给右括号前加空格
    normal! f] i <Space><Esc>
endfunction

保存配置后,按<leader>s(默认leader是反斜杠\)就能搞定当前行的方括号空格。如果需要支持()、{}这类其他包围符,只需扩展函数里的匹配逻辑,比如把f[换成search('\v[\(\{\[]', 'c')来匹配多种左符号。

用vim-surround插件简化操作

如果你已经装了vim-surround(Vim生态中处理包围符的常用插件),可以用它的快速修改功能:

  • 光标移到[上,按cs[ [ (最后一个是空格),直接把[改成[
  • 光标移到]上,按cs] ] (第一个是空格),直接把]改成 ]

嫌两步麻烦的话,也可以把这两步合并成一个映射:

nnoremap <leader>s cs[ [ <bar> cs] ] <CR>

按<leader>s就能一次性处理左右括号。

正则替换批量处理

如果要一次性修改整个文件或选中区域的所有方括号,用正则替换更高效:

  • 全局替换所有方括号::%s/\[\(.*\)\]/[ \1 ]/g
  • 仅替换当前行::s/\[\(.*\)\]/[ \1 ]/g
  • 替换选中区域:先选中行,再执行:'<,'>s/\[\(.*\)\]/[ \1 ]/g

这个正则会把[内容]格式统一改成[ 内容 ],适合批量标准化代码格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:02:22