如何用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
相关产品推荐
相关产品推荐

