vim中括号内字符串的反向顺序

时间:2018-01-01 00:30:01

标签: vim

是否有一种巧妙的方法来反转vim中某种类型括号内的字符串,例如

{1,2,3,4,5}

=>

{5,4,3,2,1}

3 个答案:

答案 0 :(得分:7)

这个命令怎么样?

:%s/{\zs\\(.\\{-}\\)\ze}/\= join(reverse(split(submatch(0), '\zs')), '')/g

答案 1 :(得分:3)

我们的想法是使用大写寄存器名称来利用寄存器的"a功能。

要实现这一目标,你必须做一些准备工作:

  • clean :let @a=""注册:{,1,2,3,4,5}
  • 在第一个元素之前添加逗号:}
  • 将光标置于"AdF,正常模式下

好的,我们走了:

  • 执行.,然后按"aP重复此操作,直到删除所有元素。
  • 执行{,5,4,3,2,1}以粘贴相反的序列,您将获得:var GS= { users: { user1: { token: "Djaskdjaklsdjklasjd" } , user555: { token: "zxczxczxczxc" } , user1239: { token: "ertertertertertret" } } };
  • 删除第一个逗号

答案 2 :(得分:0)

使用正则表达式

:.s/\v(\d+),(\d+),(\d+),(\d+),(\d+)/\5,\4,\3,\2,\1