Vim dividi argomenti, annulla "J"


1

Trovo molto più facile l'argomento di una funzione, elementi di un elenco ecc. Quando sono divisi su linee diverse. Se questo è più difficile da leggere, posso unirmi a loro in seguito da "J". Come si dovrebbe fare per dividere tutto tra parentesi. Sembra essere una specie di modello di ricerca regex, ma non sono riuscito a trovare un modo per farlo funzionare indipendentemente dagli argomenti e dal livello di rientro:

Esempi:

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]

Esempio di ciò che voglio



Le risposte sono un'implementazione altamente insoddisfacente e ingenua qualcosa come l'estensione ": s / / \ r / g" non risolve il 2o e 3o esempio.
Joonatan Samuel,

Risposte:


1

Se questo è il codice Python, come mi sembra, il mio plugin splitjoin sembra fare la cosa giusta per tutti questi esempi, con alcune differenze di indentazione (che comunque provengono dallo script di indentazione incorporato).

Questa non è tanto una risposta in termini di "ecco come lo fai", perché è un problema complicato, quando devi contare parentesi, ignorare le stringhe e così via. È per questo che ho scritto un intero plugin per questa roba, che gestisce ogni situazione con una diversa funzione di callback. Posso solo suggerirti di provarlo e vedere se si adatta bene ai tuoi casi d'uso.


Installato, modificato, utilizzandolo.
Joonatan Samuel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.