Tengo algunos caracteres ocultos en el búfer y el desplazamiento horizontal mata la alineación a lo grande.
¿Hay alguna forma de desactivarlo? No pude encontrar ninguna opción relevante.
Editar: Demo añadida. Puede ver que vim basa el desplazamiento de desplazamiento en la parte no oculta del archivo, por lo tanto, la alineación se rompe.
:set wrap
<c-s>
para suspender la terminal para que la pantalla no se actualice. Luego podría hacer cambios a ciegas y volver al comienzo de la línea y presionar<c-q>
para reanudar. Otras opciones quizás no útiles: asegúrese de que haya el mismo número de caracteres ocultos entre cada carácter visible o amplíe la ventana.Respuestas:
Cómo deshabilitar el desplazamiento horizontal
He escrito una solución que deshabilita el desplazamiento horizontal, ( alejándose de la sugerencia de @ ЯрославРахматуллин ), pero no creo que le guste:
Esto evita el desplazamiento hacia la derecha mediante el método increíblemente preciso de desplazarse nuevamente hacia atrás. *
* Debido a que no sé qué tan lejos te has desplazado hacia la derecha o qué tan largas son tus líneas, estoy desplazando la cantidad arbitrariamente "lejana" de 99 anchos de media pantalla. Tenga en cuenta también que no me estoy molestando en verificar si realmente se ha desplazado hacia la derecha o no antes de desplazarse "hacia atrás" hacia la izquierda. Si realmente tiene la intención de utilizar esta solución, es posible que desee hacer algo al comparar los valores de
getcurpos()
,'sidescroll'
y'columns'
.¿Por qué no vas a querer hacerlo?
La razón por la que no va a usar esto es porque el problema de desplazamiento subyacente es otro problema: Vim no le permitirá mover el cursor "fuera de la pantalla". Por lo tanto, si se desplaza hacia la izquierda de manera tal que el cursor no esté en la pantalla después del desplazamiento, Vim lo ayuda con el cursor y lo mueve hacia la izquierda.
Pero debido a que el cálculo que está usando para saber si el cursor está en la pantalla es el mismo que está usando para decidir si desplazarse en el problema original, el efecto neto es que con esta "solución" en su lugar, si intenta mover el cursor a la derecha en una situación que normalmente provocaría un desplazamiento lateral, ahora el cursor se niega a moverse en absoluto. **
** Para ser un poco más preciso, dependiendo de la posición actual y el movimiento, el cursor puede moverse hacia la derecha; simplemente no se moverá más allá de la posición donde normalmente se produciría un desplazamiento.
¿Otras opciones?
Así que me temo que su solución planificada no va a funcionar. Si quieres un viable solución al problema general, será necesario implementarlo en el código fuente de Vim.
Como ya ha notado , es poco probable que esto llegue pronto, así que me temo que su mejor opción para solucionar el caso específico del problema que se muestra en su gif es solicitar al autor del complemento que deje de usar
conceal
completo y en su lugar eliminar el texto oculto del búfer por completo.Según el resultado oculto y la mención
vim-plugin-AnsiEsc
en la documentación, esto podría ser algo que puedan implementar, pero es difícil decirlo con certeza sin saber cómo funciona el complemento.fuente
Si tiene una manera de editar el archivo, es posible que desee ajustar la configuración de colores
\[
y\]
, como se explica aquí :De lo contrario, los códigos de color completos se consideran caracteres y, por lo tanto, podrían tenerse en cuenta para el desplazamiento horizontal.
No estoy seguro de que este sea el problema, pero al ver la fuente del calendario (con
syntax off
) y el comportamiento actual, me hizo pensar en eso.fuente
conceal
característica (vea la discusión en los comentarios).EDITAR: Este es un error conocido, cerrado "no se solucionará": https://github.com/vim/vim/issues/260
Respuesta original:
Mi vim no se desplaza horizontalmente hasta que el cursor toca el borde de la pantalla.
Estas usando
sidescrolloff
?No sé si deshabilitar por completo el desplazamiento horizontal, pero esta configuración debería hacer que espere hasta que el cursor se salga del borde:
fuente
'sidescrolloff=0'
porque Vim cree que el cursor se ha salido del borde: basa su cálculo en el texto oculto, no en el texto visible.