Vim split arguments, cofnij „J”

1

Znacznie łatwiej jest mi argumentować funkcję, elementy listy itp., Gdy są one podzielone na różne linie. Jeśli jest to trudniejsze do odczytania, mogę dołączyć do nich później przez „J”. Jak należy rozdzielić wszystko w nawiasie. Wygląda na to, że jest to jakiś wzorzec wyrażenia regularnego search'n’place, ale nie mogłem znaleźć sposobu, aby działał niezależnie od argumentów i poziomu wcięcia:

Przykłady:

Example 1:
parser.add_argument('--viz', action='store_true', help='to show vizualisation or not')

Desired output:
parser.add_argument('--viz',
        action='store_true',
        help='to show vizualisation or not')


Example 2:
Input:
parser.add_argument('--viz', action='store_true', lambda: print("sometext here"))

Desired output:
parser.add_argument('--viz',
        action='store_true',
        lambda: print("sometext here"))


Example 3:
Input:
def func(*args, **kwargs):
    temp = ['asd', 123, true]

Desired output:
def func(*args,
         **kwargs):

    temp = ['asd',
             123,
             true]

Przykład tego, czego chcę

Joonatan Samuel
źródło
Odpowiedzi, że istnieje wysoce niezadowalająca i naiwna implementacja, taka jak rozszerzenie „: s / / \ r / g”, nie rozwiązuje drugiego i trzeciego przykładu.
Joonatan Samuel,

Odpowiedzi:

1

Jeśli jest to kod Pythona, jak mi się wydaje, moja wtyczka splitjoin wydaje się działać poprawnie dla wszystkich tych przykładów, z pewnymi różnicami wcięcia (które i tak pochodzą z wbudowanego skryptu wcięcia).

To nie jest tak duża odpowiedź w kategoriach „tak to robisz”, ponieważ jest to skomplikowany problem, kiedy trzeba liczyć nawiasy, ignorować ciągi znaków i tak dalej. Dlatego napisałem całą wtyczkę do tych rzeczy, która obsługuje każdą sytuację z inną funkcją wywołania zwrotnego. Mogę tylko zasugerować, aby wypróbować i sprawdzić, czy dobrze pasuje do twoich przypadków użycia.

Andrew Radev
źródło
Zainstalowałem go, zmodyfikowałem, używając go.
Joonatan Samuel,