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

Vim中如何反转括号内字符串?示例:{1,2,3,4,5}→{5,4,3,2,1}

嘿,在Vim里反转括号内的字符串其实有不少高效的玩法,我平时处理这类需求常用这几种方法,分情况给你唠唠:

一、通用手动操作法(适用于任意括号类型)

不管是{}、()还是[],都可以用这套流程快速搞定:

  1. 定位括号范围:把光标放在任意一个括号(左或右)上,按下%,Vim会自动跳转到对应的配对括号,帮你确认范围是否正确。
  2. 选中括号内内容:按下vi{(如果是大括号)、vi((小括号)或者vi[(中括号),这时候括号内的所有内容(比如1,2,3,4,5)就被选中了(注意不会选中括号本身)。
  3. 执行反转:
    • 方法A:用Vim内置函数反转。选中后输入:s/\(.*\)/\=reverse(submatch(1))/,回车即可。这个命令的原理是把选中的内容(.*匹配所有)用reverse()函数反转后替换回去。
    • 方法B:调用系统命令反转。选中后按下!rev,回车。rev是大多数Unix-like系统自带的字符反转命令,速度很快。

举个你提到的例子:{1,2,3,4,5}

  • 光标移到{上,按vi{选中1,2,3,4,5
  • 输入:s/\(.*\)/\=reverse(submatch(1))/回车,就会变成{5,4,3,2,1}
二、针对特定括号的一键快捷法

如果你经常需要反转某类括号(比如大括号)内的内容,可以自定义一个快捷键,省得每次重复输入命令:

  1. 打开你的~/.vimrc(Windows系统是_vimrc)
  2. 添加一行映射:
    nnoremap <leader>r vi{:s/\(.*\)/\=reverse(submatch(1))/<CR>
    
    这里<leader>默认是反斜杠\,所以以后只要把光标放在大括号内或括号上,按下\r就能一键完成反转。如果要适配其他括号,把vi{改成vi(或vi[就行。
小提示:处理嵌套括号

如果遇到嵌套括号(比如{a,{b,c,d},e}),想要反转最外层的内容,只要把光标移到最外层括号上,按vi{就能正确选中外层括号内的所有内容;如果要反转内层,就把光标移到内层括号上再用vi{即可。

内容的提问来源于stack exchange,提问作者Ray Hua Wu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:47:03