Estoy tratando de escribir una macro pequeña para agregar un; al final de la línea actual (A;), luego regrese a la posición del cursor desde la que salté antes de ejecutar la macro.
Co y Ci no son lo que necesito, ni son '' y ``, que operan en puntos de edición. ¿No hay forma de hacer esto sin colocar un marcador?
Respuestas:
Si está de acuerdo con hacer una pequeña función en lugar de una pequeña macro, le propondría lo siguiente:
La posición del cursor se obtiene usando
getpos()
y luego se recupera consetpos()
.Esta función podría agregar cualquier cadena que desee. También comprueba si la línea ya tiene la cadena deseada al final, en cuyo caso no hace nada.
Puede definir mapas de teclas que usen esta función que sean útiles para diferentes idiomas:
o
fuente
El comportamiento de `` y lo que se consideran '' saltos '' se explican claramente en el documento.
De
:help jump-motions
:A
obviamente no está en la lista, así que "tick-tick-back", como lo llama Gary Bernhardt, no funcionará "como está". Sin embargo, sigue siendo un buen enfoque, pero debe colocar explícitamente la marca de retroceso antes de hacerloA;
fuente
Terminé escribiendo una pequeña función, una versión menos flexible pero más compacta que la que acaba de publicar.
Keybind:
Función:
fuente
Si usa un nivel bajo en
setpos()
lugar de:substitute
(que tiene otros efectos secundarios no deseados, como agregar el patrón al historial de búsqueda), la posición del cursor se mantendrá automáticamente:fuente