Как переместить список, разделенный разрывом строк, в одну и ту же строку в vim

#vim

Вопрос:

Иногда я сталкиваюсь с подобным кодом, например, после уменьшения количества параметров в функции:

 def foo(
    arg1,
    arg2):

    # do something
 

Разбиение списка параметров таким образом могло бы иметь смысл, когда было много длинных аргументов, но теперь я хочу, чтобы текст выглядел так:

 def foo(arg1, arg2):

    # do something
 

Для меня это обычно означает переход к началу arg1 , переход в режим вставки и нажатие клавиши backspace до тех пор , пока я не удалю параметр, а затем повторение для arg2 .

Эти ситуации слишком малы, чтобы гарантировать настройку макроса или даже использование sed. Есть ли комбинация клавиш vim , которую я могу использовать, чтобы просто удалить все пробелы (включая разрывы строк) между открывающей скобкой foo и первой буквой arg1 ?

Пример-python, но на самом деле это не вопрос, касающийся конкретного языка.

Комментарии:

1. Почему бы не использовать black ? При сохранении он должен быть отформатирован следующим образом

2. @yudhiesh Круто, я об этом не слышал. Я искал решение, не зависящее от языка, но black все равно это интересное предложение.

3. Да, я использую его с coc-pyright .

Ответ №1:

Для меня это обычно означает переход к началу arg1 , переход в режим вставки и нажатие клавиши backspace до тех пор , пока я не удалю параметр, а затем повторение для arg2 .

Или, проще говоря, JxJJ .

Но, согласно комментариям, использование внешнего форматера-довольно разумная идея.

 " in after/ftplugin/python.vim
set formatprg=black-3.8 -q -
 

Видишь :help J , :help gq .