¿Cómo creo automáticamente llaves en vim?
Este problema no es trivial, como verá. La respuesta es simple: El uso de un plugin, como autoclose o smartinput . Simplemente reasignando ingenuamente las teclas ([.. le presentará las mayúsculas y minúsculas en un par de líneas, es por eso que estos complementos están hechos y por qué generalmente son bastante complejos (si son buenos).
Así que usé UltiSnips para insertar la llave de cierre
Podría intentar esto en su lugar (que es diferente de mi sugerencia original):
inoremap ( ()<CR>=UltiSnips_Anon('$1)$0', ')')<CR>
Donde UltiSnips dividirá la línea en (
lugar de incluirla main
en el partido. El problema con el uso de un complemento de fragmento para esto es que (por lo general) no admiten la anidación, por lo que olvidarán cualquier posición de salto cuando se inserte el siguiente fragmento (anidado).
Para saltar del par de llaves Ctrl-jse usa la combinación .
Puede reasignar Ctrl-jpara UltiSnips o el complemento en conflicto. Si las asignaciones no figuran en la documentación, puede usar :map/imap/nmap <key>
para mostrar la asignación. Si desea Ctrl-jelegir y elegir y hacer el trabajo de ambos complementos, está solicitando:
- algo mucho más avanzado de lo que sospecho que podrías pensar
- algo que sospecho que realmente no quieres
Considere este bucle bash:
while (( ${arr1[i]} < ${arr2[i<CURSOR>]} )); do
[next_snippet_position_marker]
done
En este caso, deberá presionar Ctrl-j5 veces para llegar al cuerpo del bucle. El uso de las llaves de cierre para saltar de un par correspondiente le brinda mucho más control sobre dónde realmente quiere que se mueva el cursor. Puede implementar una pila para realizar un seguimiento de los pares insertados y usar Ctrl-jpara hacer estallar y moverse, pero luego se encontrará con problemas si comienza a eliminar llaves manualmente sin eliminarlas de la pila. Entonces comenzará a resolver problemas que los complementos de llaves están tratando de resolver. Esta es una rueda difícil de reinventar.
Ampliando esto, puede obtener lo que inicialmente solicitó, usar Ctrl-jpara saltar de llaves y fragmentos. Si usa algún valor ficticio para representar posiciones de fragmentos y los empuja a la pila además de los corchetes de cierre, con una reasignación dinámica Ctrl-jpara corresponder a la entrega de fragmentos o llaves. Pero luego necesitará implementar algunas heurísticas bastante avanzadas para descubrir qué magia debería suceder, ya que esencialmente está asumiendo dos problemas a la vez, que actualmente están siendo resueltos por los creadores de complementos de inserción de fragmentos y complementos de coincidencia de llaves por separado, y resuelve estos problemas nuevamente, además de sus soluciones, para lograr conveniencia y, bueno, magia.
Todo se reduce a control vs conveniencia. Creo que el control le servirá mejor en este caso, lo que significa que debe mantener estos problemas y sus complementos y mapeos de teclas asociados por separado. Si aún desea conveniencia, es factible, pero es difícil.
)
, reasignarc-j
a eso podría funcionar.