Vim divide argumentos, deshace "J"


1

Me resulta mucho más fácil argumentar una función, elementos de una lista, etc. cuando se dividen en diferentes líneas. Si esto es más difícil de leer, puedo unirme a ellos más tarde con "J". ¿Cómo se debe dividir todo entre paréntesis? Parece ser algún tipo de patrón de búsqueda y reemplazo de expresiones regulares, pero no pude encontrar una manera de hacerlo funcionar independientemente de los argumentos y el nivel de sangría:

Ejemplos:

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]

Ejemplo de lo que quiero



Respuestas hay una implementación altamente insatisfactoria e ingenua, algo así como la extensión ": s / / \ r / g" no resuelve el segundo y tercer ejemplo.
Joonatan Samuel

Respuestas:


1

Si este es el código de Python, como me parece, mi plugin splitjoin parece hacer lo correcto para todos estos ejemplos, con algunas diferencias de sangría (que de todos modos provienen del script de sangría incorporado).

Esto no es tanto una respuesta en términos de "así es como lo haces", porque es un problema complicado, cuando necesitas contar corchetes, ignorar cadenas, etc. Es por eso que escribí un complemento completo para estas cosas, que maneja cada situación con una función de devolución de llamada diferente. Solo puedo sugerirle que lo pruebe y vea si encaja bien con sus casos de uso.


Lo instalé, lo modifiqué y lo usé.
Joonatan Samuel
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.