Como desativar a rolagem horizontal
Eu escrevi uma solução que desativa a rolagem horizontal ( retirando a sugestão de @ ЯрославРахматуллин ), mas acho que você não vai gostar:
augroup NoScrollPlease
autocmd!
autocmd CursorMoved * norm!99zH
augroup END
Isso evita a rolagem para a direita pelo método incrivelmente preciso de rolagem para trás novamente. *
* Como não sei até que ponto você rolou para a direita ou quanto tempo suas linhas estão, estou rolando arbitrariamente a quantidade "distante" de 99 larguras de meia tela. Observe também que não estou me preocupando em verificar se você realmente rolou para a direita antes de rolar para trás. Se você realmente pretende usar esta solução, convém tentar algo comparando os valores de getcurpos()
, 'sidescroll'
e 'columns'
.
Por que você não vai querer fazer isso
A razão pela qual você não vai usar isso é que, por trás do problema de rolagem, há outro problema: o Vim não permite que você mova o cursor para "fora da tela". Portanto, se você rolar para a esquerda de maneira que o cursor fique fora da tela após a rolagem, o Vim ajudará o cursor a acompanhá-lo e o moverá para a esquerda.
Mas como o cálculo usado para determinar se o cursor está na tela é o mesmo usado para decidir se o problema original é rolado, o efeito final é que, com essa "solução", se você tentar mover o cursor para a direita em uma situação que normalmente causaria uma rolagem lateral, agora o cursor se recusa a se mover. **
** Para ser um pouco mais preciso, dependendo da posição atual e do movimento, o cursor pode se mover para a direita; apenas não passa da posição em que normalmente ocorre um pergaminho.
Outras opções?
Por isso, acho que sua solução planejada não vai dar certo. Se você deseja uma solução viável para o problema geral, ela precisará ser implementada no código-fonte do Vim.
Como você já observou , é improvável que chegue tão cedo, então, temo que sua melhor aposta para uma solução alternativa para a instância específica do problema mostrado em seu gif seja pedir ao autor do plugin que pare de usar conceal
completamente e, em vez disso, remova o texto oculto do buffer completamente.
Com base na saída não oculta e na menção vim-plugin-AnsiEsc
na documentação, isso pode ser algo que é possível implementá-los, mas é difícil dizer com certeza sem o conhecimento de como o plug-in funciona.
:set wrap