Eu tenho alguns caracteres ocultos no buffer e a rolagem horizontal acaba com o alinhamento.
Existe alguma maneira de desativá-lo? Não encontrei nenhuma opção relevante.
Editar: demonstração adicionada. Você pode ver que o vim baseia o deslocamento da rolagem na parte não oculta do arquivo, portanto, o alinhamento é interrompido.
:set wrap
<c-s>
suspender o terminal para que a tela não seja atualizada. Você pode fazer alterações às cegas, voltar ao início da linha e pressionar<c-q>
para continuar. Outras opções que talvez não sejam úteis: verifique se o mesmo número de caracteres ocultos está entre todos os caracteres visíveis ou amplie a janela.Respostas:
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:
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.fonte
Se você tem uma maneira de editar o arquivo, convém agrupar a configuração de cores com
\[
e\]
, conforme explicado aqui :Caso contrário, todos os códigos de cores são considerados caracteres e, portanto, podem ser levados em consideração na rolagem horizontal.
Não tenho certeza se esse é o problema, mas, vendo a fonte do calendário (com
syntax off
) e o comportamento atual, isso me fez pensar nisso.fonte
conceal
recurso (consulte a discussão nos comentários).EDIT: Este é um erro conhecido, fechado "não será corrigido": https://github.com/vim/vim/issues/260
Resposta original:
Meu vim não rola horizontalmente até o cursor atingir a borda da tela.
Você está usando
sidescrolloff
?Não sei como desativar completamente a rolagem horizontal, mas essa configuração deve esperar até que o cursor saia da borda:
fonte
'sidescrolloff=0'
porque o Vim acredita que o cursor está fora do limite: ele baseia seu cálculo no texto não oculto, não no texto visível.