Ir al centro de la línea en vim

14

Sé que 0 va al principio de la línea y $ va al final, pero ¿hay algo para el medio?

teggy
fuente

Respuestas:

11
:call cursor(0, len(getline('.'))/2)
efímero
fuente
44
Esto sería bastante útil si fuera mapeado, por ejemplo:: nnoremap gm: call cursor (0, len (getline ('.')) / 2) <cr>
Heptite
3
virtcol ('$') / 2 es suficiente.
Luc Hermitte
@Luc Hermitte: Agradable, pero no es exactamente el mejor comportamiento cuando se trata de pestañas duras.
Ephemient
Por eso uso virtcol en lugar de col. :). Pero de hecho deberíamos usar | y no cursor (). Por cierto, len () no dará ningún resultado mejor. Además, len dará otros problemas con los caracteres de varios bytes.
Luc Hermitte
8

Escribir gmlo haría, pero se mueve por líneas de pantalla (ver :help gm). Para que funcione con líneas de texto, se puede reasignar este comando:

map gm :call cursor(0, virtcol('$')/2)<CR>
JooMing
fuente
gm parece mover el cursor al centro de la pantalla, pero si mi línea de texto es más corta que la longitud de la pantalla, no me lleva al centro. Perdón por no aclarar.
teggy
@teggy: Ya veo. Modifiqué mi solución para reasignar gm para ir a la mitad de la línea de texto. Como puede ver, combina soluciones de ephemient y Luc Hermitte.
JooMing
Como ephemient señaló, todavía tiene un problema con los tarbs duros ya que el cursor () los cuenta como un carácter cada uno. Además, tampoco funcionará con caracteres de varios bytes.
Luc Hermitte
7

Aquí hay una solución que respetará las fichas duras y los caracteres de varios bytes también.

:exe 'normal '.(virtcol('$')/2).'|'
Luc Hermitte
fuente
1

Aquí está la mejor solución que he encontrado. Saltar exactamente al medio de la línea no es muy práctico. Lo más probable es que aún necesites mover el cursor algunas posiciones después de moverte hacia el centro. ¿Qué pasaría si pudieras saltar a un personaje específico? Muchas personas simplemente buscan el personaje, luego presionan "siguiente" hasta que lo alcanzan. Esto es lento El complemento Easy-motion ofrece una mejor solución.

Mi favorito es <leader><leader>sel personaje al que quieres saltar. Easy Motion reemplaza todas las coincidencias con diferentes letras para que pueda elegir. Mira el tutorial. Es un complemento que cambia la vida ...

Sam Ruberti
fuente