Faites défiler l'écran, pas le curseur, lorsque vous utilisez la molette de défilement


18

J'utilise Vim dans un terminal, donc le défilement avec la molette de défilement utilise la syntaxe \e[Aet \e[B(où \esymbolise \x1bou s'échappe).

Cependant, Vim interprète cela en déplaçant le curseur vers le haut ou vers le bas d'une ligne. Le comportement souhaité est que l' écran soit déplacé vers le haut ou vers le bas, comme <C-e>et le <C-y>faire.

Comment dire à Vim de déplacer l'écran lorsque j'utilise ma molette de défilement, tout en gardant le curseur sur la même ligne? Cela devrait fonctionner dans tous les modes courants (insertion, normal, sélection visuelle).

J'ai déjà essayé, par exemple, :nnoremap <esc>[A <C-e>(remplacer <esc>par un caractère d'échappement littéral inséré par Ctrl+V Esc), mais cela s'est avéré futile.

J'utilise Vim 7.4.52 sur Ubuntu 14.04 avec GNOME.


Pourriez-vous limiter la question à un système d'exploitation ou à un environnement de fenêtrage?
200_success

@ 200_success D'accord, j'ai modifié mon environnement dans la question.
Poignée de porte

Je pense que cette question devrait également être étiquetée «terminal». Est-il non modifiable parce qu'il a une réponse?
bsmith89

Réponses:


12

Comme @Doorknob l'a dit dans son commentaire, :set mouse=arésout le problème.


1
Existe-t-il un moyen de le faire sans définir mouse=a? Je ne veux pas que des clics accidentels gâchent mon flux d'édition.
wchargin

le ain mouse=asignifie all(ne pas ajouter). de :help mouse: "la souris peut être activée pour différents modes ... Normalement, vous activez la souris dans les quatre modes avec:: set mouse = a" au moins dans mon vim quand j'ai activé que cela ne gâchait pas avec le changement de mode (juste activé le défilement - et "cliquez pour aller à la ligne")
Fawix

2
Bien que ce fil soit ancien, pour quelqu'un qui veut set mouse=asans clics accidentels gâcher le flux, :map <LeftMouse> <nop>ferait l'affaire.
Sunny Pun

0

Le comportement que vous voulez est ce qui se passe sur mon vim. Je ne trouve pas de paramètre qui l’active / le désactive. Peut-être vérifiez la : aide au défilement ? scrolloffpourraient être impliqués.

Vous pouvez également envisager d'utiliser des marques comme solution de contournement.

  1. ma (mettre la marque 'a')
  2. faites défiler l'écran comme vous le souhaitez
  3. `a (envoyer le curseur pour marquer 'a')

J'obtiens ce comportement même sans charger mon vimrc ( vim -u NONE). Il s'agit de Vim 7.4 sur Ubuntu 14.04 avec GNOME.
Poignée de porte

@Doorknob Et je reçois la fenêtre au lieu du curseur se déplaçant sans mon .vimrc(juste set mouse=a). :help scrollingindique que le comportement de défilement est spécifique à la plate-forme. J'utilise vim dans iterm2 sur OSX.
bsmith89

Ah! :set mouse=aa résolu le problème pour moi. Modifiez cela dans votre réponse, et je l'accepterai. Merci!
Poignée de porte
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.