J'ai des caractères cachés dans la mémoire tampon et le défilement horizontal tue l'alignement beaucoup de temps.
Y a-t-il un moyen de le désactiver? Je n'ai pu trouver aucune option pertinente.
Edit: Démo ajoutée. Vous pouvez voir que vim base le décalage de défilement sur la partie non dissimulée du fichier, ce qui entraîne la rupture de l'alignement.
:set wrap
<c-s>
pour suspendre le terminal afin que l'écran ne soit pas mis à jour. Vous pouvez ensuite faire des modifications à l'aveuglette, revenir au début de la ligne et appuyer<c-q>
pour reprendre. Autres options peut-être non utiles: assurez-vous que le même nombre de caractères masqués se trouve entre chaque caractère visible ou élargissez la fenêtre.Réponses:
Comment désactiver le défilement horizontal
J'ai écrit une solution qui désactive le défilement horizontal (en décochant la suggestion de @ ЯрославРахматуллин ), mais je ne pense pas que vous allez l'aimer:
Cela évite de faire défiler vers la droite avec la méthode incroyablement précise consistant à simplement faire défiler à nouveau. *
* Parce que je ne sais pas dans quelle mesure vous avez fait défiler vers la droite ou combien de temps vos lignes sont, je fais défiler le montant arbitrairement "loin" de 99 demi-largeurs d'écran. Notez également que je ne me soucie pas de vérifier si vous avez réellement fait défiler vers la droite avant de faire défiler "en arrière" vers la gauche. Si vous avez réellement l'intention d'utiliser cette solution, vous pouvez ajouter quelque chose en comparant les valeurs de
getcurpos()
,'sidescroll'
et'columns'
.Pourquoi tu ne vas pas vouloir le faire
La raison pour laquelle vous n'allez pas utiliser ceci est que le problème de défilement est sous-jacent à un autre problème: Vim ne vous laissera pas déplacer le curseur "hors écran". Par conséquent, si vous faites défiler le curseur vers la gauche de manière à ce que le curseur ne soit plus affiché à l'écran après le défilement, Vim l'y amènera gentiment et le déplacera vers la gauche.
Mais comme le calcul qu’il utilise pour déterminer si le curseur est à l’écran est identique à celui utilisé pour décider de faire défiler ou non le problème initial, l’effet net est que, avec cette "solution" en place, si vous essayez de déplacer le curseur. curseur à droite dans une situation qui provoquerait normalement un défilement latéral; maintenant, le curseur refuse de se déplacer. **
** Pour être légèrement plus précis, en fonction de la position actuelle et du mouvement, le curseur peut se déplacer vers la droite; il ne veut tout simplement pas dépasser la position où un parchemin se produirait normalement.
Autres options?
Donc, je crains que votre solution de contournement prévue ne va pas se dérouler. Si vous voulez une solution viable au problème général, il faudra l’appliquer dans le code source Vim.
Comme vous l'avez déjà noté , il est peu probable que cela arrive dans un avenir rapproché. Je crains donc que votre meilleur pari pour une solution de contournement à l'exemple du problème présenté dans votre gif consiste à demander à l'auteur du plug-in de cesser
conceal
complètement d' utiliser et à la place. supprime entièrement le texte caché du tampon.Sur la base de la sortie et la mention non dissimulée de
vim-plugin-AnsiEsc
dans la documentation ce pourrait être quelque chose qu'il est possible pour eux de mettre en œuvre, mais il est difficile de dire avec certitude sans connaître le fonctionnement du plug - in.la source
Si vous avez le moyen de modifier le fichier, vous voudrez peut-être envelopper la configuration des couleurs avec
\[
et\]
, comme expliqué ci- dessous :Sinon, tous les codes de couleur sont considérés comme des caractères et peuvent donc être pris en compte pour le défilement horizontal.
Je ne suis pas sûr que ce soit le problème, mais vu la source du calendrier (avec
syntax off
) et le comportement actuel, cela m'a fait penser à cela.la source
conceal
fonctionnalité (voir la discussion dans les commentaires).EDIT: Ceci est un bug connu, fermé "ne résoudra pas": https://github.com/vim/vim/issues/260
Réponse originale:
Mon vim ne fait pas défiler horizontalement jusqu'à ce que le curseur touche le bord de l'écran.
Utilisez-vous
sidescrolloff
?Je ne sais pas comment désactiver complètement le défilement horizontal, mais ce paramètre devrait le faire attendre jusqu'à ce que le curseur se détache du bord:
la source
'sidescrolloff=0'
parce que Vim pense que le curseur s'est élancé: il base son calcul sur le texte non masqué, pas sur le texte visible.