用Vim中的do/end替换匹配的{braces}(Ruby)

Jim*_*art 7 ruby vim

有没有人有一个插件或宏替换匹配{括号}doendVim中?最好像这样转换单行语句:

foo.each { |f| f.whatever }
Run Code Online (Sandbox Code Playgroud)

成:

foo.each do |f|
  f.whatever
end
Run Code Online (Sandbox Code Playgroud)

我可以自己为这个案例制作一个宏,但是我想要一些能够处理转换现有的多行,可能很复杂的块的东西,比如:

foo.each { |f|
  f.bars.each { |b| b.whatever }
  hash = { a: 123, b: 456 }
}
Run Code Online (Sandbox Code Playgroud)

成:

foo.each do |f|
  f.bars.each { |b| b.whatever }
  hash = { a: 123, b: 456 }
end
Run Code Online (Sandbox Code Playgroud)

我看过vim-surroundrails.vim,还没找到方法.

Dan*_*edy 8

有一个名为Vim Blockle的Vim插件可以执行此功能.

安装插件后,将光标放在{ } do或上end,然后按<Leader>b以交换块样式.

  • 所以我考虑安装 Blockle 并偶然发现了 Blockle 作者的建议,改为安装 `splitjoin`:https://github.com/jgdavey/vim-blockle/issues/5 (2认同)