Mi cursor está en el medio de un párrafo cuando decido que de repente necesito copiar ese párrafo:
Entonces escribo vip
para seleccionar el párrafo visualmente:
Ahora presiono cmd+C
para copiar al portapapeles (esto puede variar en su sistema, pero no debería ser relevante para la pregunta central de mi publicación), lo que deja mi cursor al comienzo del párrafo:
en lugar de la posición deseada, que es donde estaba cuando comencé.
Tenga en cuenta que el mismo problema se produce al extraer la selección de forma no visual con yip
.
Me gustaría que el comportamiento predeterminado sea "volver a la posición original del cursor" después de realizar acciones de selección / copia como esta. ¿Existe una configuración que lo haga posible?
vimscript
vimrc
cursor-movement
Jonás
fuente
fuente
mm "+yap `m
(Tenga en cuenta que se"+y
ajusta al portapapeles de su sistema)Respuestas:
Una posible solución es usar saltos:
Antes de tirar o seleccionar visualmente, puede establecer un nuevo salto al que podrá acceder después de que su cursor se haya movido. Para ello utiliza m`.
Luego, después de que su cursor se haya movido debido al uso de tirones ctrlopara volver a la lista de saltos. También puede ver la lista de los saltos disponibles con
:jumps
y navegar esta lista con ctrloyctrliPara resumir su flujo de trabajo sería:
Como usar m` establece una marca, puede saltar a ella en ``lugar de ctrlo.
Puedes leer
:h mark-motions
y:h :jumps
para más información.fuente
<leader>'
que ser`
, lo que funciona bastante bien para mí. (Yo uso<space>
como mi líder.):h 'langmap'
. No digo que sea la solución ideal, pero tal vez podría ser interesante para usted.noremap ' `
noremap ` '
... Esto está en mi vimrc y funciona muy bienPuede evitar mover el cursor con:
Ver
:help range
,:help mark-motions
y:help :y
.fuente
:nmap <key> :'{,'}y<CR>
debería hacer el trabajo.Si acaba de editarlo, la solución más simple es escribir lo g ;que colocará el cursor en la última posición de edición.
Y si no ha editado el párrafo, puede hacer una simple operación de reemplazo con el mismo carácter en el que está (por ejemplo, está encendido
h
, escriberh
) para activar un "evento" de edición sin editar nada.fuente
'.
, pero puede ser muy útil navegar entre los últimos cambios cong;
yg,
.g;
que también lo lleve a la posición correcta de la columna?El complemento vim-easyclip tiene una configuración para esto:
Es un poco demasiado para mí instalar un complemento completo solo para esta pequeña característica, por lo que prefiero usar marcas según mi comentario.
fuente
Ampliando la respuesta de Al.G., podemos ir a la ubicación requerida sin editar. Solución es gi. Llegaremos a la misma posición donde estábamos en el último modo de inserción antes.
Si queremos ir al inicio o al final del texto resaltado.
Cuando tira del texto resaltado, también volverá al modo normal y puede o no conservar la posición original del cursor.
Volviendo a la ubicación original después de tirar:
gv para obtener el resaltado anterior.
Ahora puede cambiar entre la ubicación original y la actual en modo visual con la tecla
oo O.
El número de línea y columna de la línea de estado ayudará a conocer la posición exacta del cursor.
Documentación:
fuente
vip
cuando el cursor comienza en el medio de un párrafo.vip
verificar mi edición.