Следующий макрос работает в обоих случаях:
qq " start recording in register q
$ " jump to the last character on the line, a ) or a }
v% " select from here to the opening ( or {, inclusive
loh " shrink the selection
c " remove selection and enter insert mode
<CR><CR><Up> " open the (){} and put the cursor in between
<C-r>" " insert the content of default register
<Esc> " go back to normal mode
:s/,/,\r/g<CR> " replace every , with itself followed by a newline
:'[,']norm == " format the whole thing
q " stop recording
Нажмите @q
над foobar(foo: "FOO", bar: "BAR")
чтобы получить:
foobar(
foo: "FOO",
bar: "BAR"
)
и более foobar = { foo: "FOO", bar: "BAR" }
чтобы получить:
foobar = {
foo: "FOO",
bar: "BAR"
}
РЕДАКТИРОВАТЬ
Хотя этот макрос, скорее всего, будет сохраняться между сеансами, его очень легко перезаписать. К счастью, его очень легко преобразовать в отображение и сохранить в вашем ~/.vimrc
:
nnoremap <F6> $v%lohc<CR><CR><Up><C-r>"<Esc>:s/,/,\r/g<CR>:'[,']norm ==<CR>