Discussion:
[vim] désactiver la roulette mais pas le clic-milieu
(trop ancien pour répondre)
Olivier Miakinen
2017-05-26 14:49:22 UTC
Permalink
[Supersedes pour écrire « mode insertion » au lieu de
« mode édition » qui ne veut rien dire]

Bonjour,

Il m'arrive assez souvent de vouloir coller dans vim un texte
copié avec la souris depuis une autre fenêtre. Le plus simple
dans ce cas-là consiste à faire un clic-milieu avec la souris
dans la fenêtre où j'ai une édition en cours avec vim.

Mon problème, c'est que j'ai une souris dont la roulette réagit
bien plus vite que le clic sur cette roulette, et du coup mon
texte se retrouve généralement copié trois lignes au dessus ou
trois lignes en dessous de là où je le voudrais.

Comment faire, sans acheter une autre souris, pour empêcher la
roulette d'être prise en compte quand je suis en mode insertion ?

Note : en réalité je n'ai pas besoin d'un comportement différent
quand je suis en mode insertion par rapport aux autres modes, et
désactiver complètement la roulette quand je suis dans vim m'irait
tout aussi bien (mais pas quand je suis en dehors de vim).
--
Olivier Miakinen
Lucas Levrel
2017-05-30 14:25:31 UTC
Permalink
Post by Olivier Miakinen
Comment faire, sans acheter une autre souris, pour empêcher la
roulette d'être prise en compte quand je suis en mode insertion ?
« :help scroll-mouse-wheel » dit comment modifier l'effet de la molette,
il doit être possible de dire de ne rien faire.
Post by Olivier Miakinen
Note : en réalité je n'ai pas besoin d'un comportement différent
quand je suis en mode insertion par rapport aux autres modes,
Ça tombe bien parce que la doc n'évoque pas cette possibilité (dans ce
paragraphe) !
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Olivier Miakinen
2017-05-30 21:33:30 UTC
Permalink
Post by Lucas Levrel
Post by Olivier Miakinen
Comment faire, sans acheter une autre souris, pour empêcher la
roulette d'être prise en compte quand je suis en mode insertion ?
« :help scroll-mouse-wheel » dit comment modifier l'effet de la molette,
il doit être possible de dire de ne rien faire.
Post by Olivier Miakinen
Note : en réalité je n'ai pas besoin d'un comportement différent
quand je suis en mode insertion par rapport aux autres modes,
Ça tombe bien parce que la doc n'évoque pas cette possibilité (dans ce
paragraphe) !
Merci pour ta réponse. J'ai bien lu et relu la doc, et voilà où
j'en suis de mes recherches.

1) Entre les :map, :map!, :imap, etc., je devrais pouvoir choisir
dans quel(s) mode(s) je veux qu'un mapping s'applique.

2) Pour dire de ne rien faire, un mapping vers <Nop> devrait
fonctionner.

3) Quand je demande un mapping de <MouseDown> ou de <MouseUp>, je
vois qu'il prend en compte les touches de remplacement, à savoir
<ScrollWheelUp> et <ScrollWheelDown> respectivement (oui, dans
cet ordre là).

Mais...

4) Il me semble que la gestion de la souris, quand ce n'est pas dans
une fenêtre X11, ne passe pas par une simulation de touches de
clavier, et que pour cette raison tous les mappings que je peux
faire sont parfaitement inutiles car on ne passe jamais par là.

Bref, je ne vois aucune solution. :-(
--
Olivier Miakinen
Lucas Levrel
2017-05-31 12:25:05 UTC
Permalink
Post by Olivier Miakinen
1) Entre les :map, :map!, :imap, etc., je devrais pouvoir choisir
dans quel(s) mode(s) je veux qu'un mapping s'applique.
2) Pour dire de ne rien faire, un mapping vers <Nop> devrait
fonctionner.
3) Quand je demande un mapping de <MouseDown> ou de <MouseUp>, je
vois qu'il prend en compte les touches de remplacement, à savoir
<ScrollWheelUp> et <ScrollWheelDown> respectivement (oui, dans
cet ordre là).
Mais...
4) Il me semble que la gestion de la souris, quand ce n'est pas dans
une fenêtre X11, ne passe pas par une simulation de touches de
clavier
Ben, ton vim est bien dans un terminal non ? En fait je vois mal comment,
au sein d'une session X, la souris pourrait ne pas être dans une fenêtre X
(ou sur un bord de fenêtre). Si je lance emacs dans un terminal (emacs
-nw), puis la comande C-h k, puis que j'actionne la roulette, il « voit »
une touche qu'il appelle <up>.

Dans la doc de Vim, à xterm-mouse-wheel qui vient après
scroll-mouse-wheel, on lit :
To use the mouse wheel in a new xterm you only have to make the scroll wheel
work in your Xserver, as mentioned above.

To use the mouse wheel in an older xterm you must do this:
(...)
Post by Olivier Miakinen
pour cette raison tous les mappings que je peux
faire sont parfaitement inutiles car on ne passe jamais par là.
Tu veux dire que tu as essayé et que ça ne marche pas ? Et si tu mets
autre chose que Nop ?
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Olivier Miakinen
2017-05-31 21:48:08 UTC
Permalink
Ce message pourrait être inapproprié. Cliquez pour l'afficher.
Lucas Levrel
2017-06-01 14:40:45 UTC
Permalink
Post by Olivier Miakinen
Post by Lucas Levrel
Ben, ton vim est bien dans un terminal non ?
Les derniers essais que j'ai faits sont sur Linux Mint. Les fenêtres
« terminal » que je lance ont comme process de plus haut niveau un bash
et tous ont le même process parent qui est un gnome-terminal-server.
Ça ce n'est pas bien grave. Les terminaux fournis par les bureauxque je
connais (Xfce, Gnome...) sont des succédanés d'xterm. D'ailleurs ici dans
Post by Olivier Miakinen
echo $TERM
xterm

Tu peux peut-être en essayer d'autres que celui de Gnome, quand même.
Post by Olivier Miakinen
Post by Lucas Levrel
En fait je vois mal comment,
au sein d'une session X, la souris pourrait ne pas être dans une fenêtre X
(ou sur un bord de fenêtre). Si je lance emacs dans un terminal (emacs
-nw), puis la comande C-h k, puis que j'actionne la roulette, il « voit »
une touche qu'il appelle <up>.
:0
(rien)
(rien non plus)
Euh, si c'est un micro-ordinateur banal que tu bootes toi-même, où
pourrait-il être que sur localhost ? Ou bien es-tu sur un « vrai »
terminal X à l'ancienne (type salle info avec plein de postes tous
connectés à un gros serveur) ?
Post by Olivier Miakinen
depuis un Windows avec Cygwin, je me connecte par ssh à un Linux RHEL.
... Mais le comportement est le même.
Il me semble que ce n'est pas pareil. À moins que depuis ton shell distant
tu lances un terminal dans lequel tu exécutes vim ? Est-ce que la souris
marche normalement (sélection pour mode Visuel p. ex.) dans cet
environnement ?
Post by Olivier Miakinen
Post by Lucas Levrel
Tu veux dire que tu as essayé et que ça ne marche pas ?
Oui.
OK. Pour moi, en local, dans le Terminal Xfce, ça marche.

Que te donne xev pour la molette ? Moi il me donne des
ButtonPress/ButtonRelease pour button 4 ou 5.
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Olivier Miakinen
2017-06-01 16:13:57 UTC
Permalink
Post by Lucas Levrel
Post by Olivier Miakinen
Post by Lucas Levrel
Ben, ton vim est bien dans un terminal non ?
Les derniers essais que j'ai faits sont sur Linux Mint. Les fenêtres
« terminal » que je lance ont comme process de plus haut niveau un bash
et tous ont le même process parent qui est un gnome-terminal-server.
Ça ce n'est pas bien grave. Les terminaux fournis par les bureauxque je
connais (Xfce, Gnome...) sont des succédanés d'xterm. D'ailleurs ici dans
Post by Olivier Miakinen
echo $TERM
xterm
Tu peux peut-être en essayer d'autres que celui de Gnome, quand même.
J'essaierai ce soir chez moi sur le Linux Mint, mais bon, chez moi
je n'ai pas ce problème de souris. Là je suis au boulot, et en effet
$TERM vaut xterm aussi bien dans les fenêtres locales Cygwin que
dans celles où j'ai lancé une session ssh.
Post by Lucas Levrel
Post by Olivier Miakinen
[...]
:0
(rien)
(rien non plus)
Euh, si c'est un micro-ordinateur banal que tu bootes toi-même, où
pourrait-il être que sur localhost ?
C'est ce que je pensais aussi. Mais dans ce cas pourquoi ne vois-je
aucune connection TCP avec le port 6000 ?
Post by Lucas Levrel
Ou bien es-tu sur un « vrai »
terminal X à l'ancienne (type salle info avec plein de postes tous
connectés à un gros serveur) ?
Non, non. ;-)

Chez moi : micro-ordinateur banal avec Linux Mint et je fais tout en
local.

Au boulot : micro-ordinateur banal avec Windows sous lequel tournent
Cygwin et Xming. Connexion ssh depuis un terminal Cygwin vers un Linux
distant qui est probablement sur une machine virtuelle.
Post by Lucas Levrel
Post by Olivier Miakinen
depuis un Windows avec Cygwin, je me connecte par ssh à un Linux RHEL.
... Mais le comportement est le même.
Il me semble que ce n'est pas pareil. À moins que depuis ton shell distant
tu lances un terminal dans lequel tu exécutes vim ?
Justement non, je lance vim directement dans le shell distant.
Post by Lucas Levrel
Est-ce que la souris
marche normalement (sélection pour mode Visuel p. ex.) dans cet
environnement ?
Oui, le problème est qu'elle fonctionne même trop bien ! Copier avec
clic gauche, coller avec clic milieu, et déplacement *dans* vim avec
la roulette, y compris en mode insertion. Ça serait super pratique si
ladite roulette n'était pas aussi sensible.
Post by Lucas Levrel
[...]
Que te donne xev pour la molette ? Moi il me donne des
ButtonPress/ButtonRelease pour button 4 ou 5.
Ça me donne la même chose.
--
Olivier Miakinen
Olivier Miakinen
2017-06-01 16:34:40 UTC
Permalink
Ce message pourrait être inapproprié. Cliquez pour l'afficher.
Lucas Levrel
2017-06-03 10:16:22 UTC
Permalink
Post by Olivier Miakinen
Je n'ai pas vraiment résolu le problème puisque je ne comprends
toujours pas comment la souris interagit avec le vim distant.
Ça doit être quelque chose d'assez malin, puisque je constate
même la chose suivante.
1) Dans le terminal Cygwin, j'ai un ascenseur qui réagit à la
molette. Cet ascenseur n'est bien sûr pas affecté par ma
connexion ssh.
2) Lorsqu'alors je lance vim, l'ascenseur disparaît, la totalité
de la fenêtre visible est dédiée à l'édition du fichier.
(...)

Terminal malin effectivement. Le Terminal d'Xfce fait la même chose en
local.
Post by Olivier Miakinen
Cela dit, j'ai trouvé deux contournements possibles.
Premier contournement, lancer un xterm depuis le terminal cygwin,
et ouvrir vim dans ce nouvel xterm. Curieusement, le comportement
malin que j'ai constaté ci-dessus ne fonctionne plus : quand je
lance vim, l'ascenseur de la fenêtre reste actif, et la molette
agit sur cet ascenseur au lieu d'agir sur le contenu du fichier
édité. Ce n'est pas super pratique, mais au moins je ne fais plus
de copiers-collers ailleurs que là où j'ai prévu de les faire.
Second contournement, demander au terminal Cygwin que le 'coller'
se fasse avec le clic droit à la place (ou en plus) du clic milieu.
Là au moins je ne risque pas de déclencher la molette de façon
intempestive.
Vus ces deux contournements, on dirait que ce n'est pas vim qui gère le
clic-milieu. Qu'as-tu comme mode de souris ? J'ai set mouse=a.
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Olivier Miakinen
2017-06-07 20:58:30 UTC
Permalink
[...]
Désolé, je n'ai pas eu le temps d'essayer jusqu'à présent : j'ai
des journées un peu chargées. Mais je ne t'oublie pas.
--
Olivier Miakinen
Olivier Miakinen
2017-06-16 14:12:14 UTC
Permalink
Bonjour, et pardon pour le long délai avant de répondre.
Post by Lucas Levrel
Post by Olivier Miakinen
Premier contournement, lancer un xterm depuis le terminal cygwin,
et ouvrir vim dans ce nouvel xterm. Curieusement, le comportement
malin que j'ai constaté ci-dessus ne fonctionne plus : quand je
lance vim, l'ascenseur de la fenêtre reste actif, et la molette
agit sur cet ascenseur au lieu d'agir sur le contenu du fichier
édité. Ce n'est pas super pratique, mais au moins je ne fais plus
de copiers-collers ailleurs que là où j'ai prévu de les faire.
Second contournement, demander au terminal Cygwin que le 'coller'
se fasse avec le clic droit à la place (ou en plus) du clic milieu.
Là au moins je ne risque pas de déclencher la molette de façon
intempestive.
Vus ces deux contournements, on dirait que ce n'est pas vim qui gère le
clic-milieu.
Je ne saurais pas le dire pour le clic milieu, mais pour la roulette
en tout cas c'est bien vim qui la prend en charge puisque ça induit
un comportement *dans* vim au lieu d'agir sur la fenêtre et son
ascenseur.
Post by Lucas Levrel
Qu'as-tu comme mode de souris ? J'ai set mouse=a.
J'ai « set mouse= ».

Bon, je n'aime pas trop remplacer un matériel avant qu'il soit
complètement cassé, mais là j'ai fini par craquer et j'ai demandé
une nouvelle souris. La roulette de la nouvelle est toujours un
peu sensible, mais quand même moins que l'ancienne si je fais
attention.

Merci encore pour ton aide.
--
Olivier Miakinen
Stéphane CARPENTIER
2017-06-17 20:06:37 UTC
Permalink
Post by Olivier Miakinen
Post by Lucas Levrel
Vus ces deux contournements, on dirait que ce n'est pas vim qui gère
le clic-milieu.
Je ne saurais pas le dire pour le clic milieu, mais pour la roulette
en tout cas c'est bien vim qui la prend en charge puisque ça induit
un comportement *dans* vim au lieu d'agir sur la fenêtre et son
ascenseur.
Post by Lucas Levrel
Qu'as-tu comme mode de souris ? J'ai set mouse=a.
J'ai « set mouse= ».
Donc, comme l'écrivait Lucas, ce n'est pas vim qui gérait la souris, il
laissait la main à l'interface graphique (qui est peut-être capable de
gérer intelligemment les ascenseurs).

Si c'est vim qui gère ta souris, c'est qu'il y a un mode de souris
défini ailleurs qui est appelé après ton « set mouse= »
--
Post by Olivier Miakinen
----------------72 caractères-:-si-ça-dépasse-je-ne-lis-pas-----------<
Stéphane
http://docs.fiat-linux.fr/lagivim.pdf
Olivier Miakinen
2017-06-19 10:04:33 UTC
Permalink
Post by Stéphane CARPENTIER
Post by Olivier Miakinen
J'ai « set mouse= ».
Donc, comme l'écrivait Lucas, ce n'est pas vim qui gérait la souris, il
laissait la main à l'interface graphique (qui est peut-être capable de
gérer intelligemment les ascenseurs).
Je trouve ça très fort. En effet, l'interface graphique est gérée par
cygwin sur Windows, dans une fenêtre de type texte avec ascenseur, à
partir de laquelle je fais un ssh vers un Linux, et lorsque je lance
vim dans ce Linux les mouvements de la roulette sont interprétés dans
vim... mais apparemment pas par vim !

Plus fort encore : si je fais un ssh vers un Unix AIX au lieu d'un Linux
et que j'y lance vim, l'ascenseur reste et la molette continue de gérer
cet ascenseur au lieu du contenu de vim. Mais si à partir de l'AIX je
fais un autre ssh vers un Linux, alors l'interface graphique sur cygwin
le détecte, grise l'ascenseur, et transfère les mouvements de roulette
en commandes vim !

Cygwin (Windows) --(ssh)--> AIX --(ssh)--> Linux --> Vim
| ^
+--------------------------------------------------+

Comment est-ce possible ???
--
Olivier Miakinen
Lucas Levrel
2017-06-19 11:01:07 UTC
Permalink
Post by Olivier Miakinen
Post by Olivier Miakinen
J'ai « set mouse= ».
Et si tu essayais mouse=a ?
Post by Olivier Miakinen
Je trouve ça très fort. En effet, l'interface graphique est gérée par
cygwin sur Windows, dans une fenêtre de type texte avec ascenseur, à
partir de laquelle je fais un ssh vers un Linux, et lorsque je lance
vim dans ce Linux les mouvements de la roulette sont interprétés dans
vim... mais apparemment pas par vim !
Plus fort encore : si je fais un ssh vers un Unix AIX au lieu d'un Linux
et que j'y lance vim, l'ascenseur reste et la molette continue de gérer
cet ascenseur au lieu du contenu de vim. Mais si à partir de l'AIX je
fais un autre ssh vers un Linux, alors l'interface graphique sur cygwin
le détecte, grise l'ascenseur, et transfère les mouvements de roulette
en commandes vim !
Cygwin (Windows) --(ssh)--> AIX --(ssh)--> Linux --> Vim
| ^
+--------------------------------------------------+
Ça me dépasse aussi, mais pour avoir l'explication il faudra peut-être
changer de groupe...
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Olivier Miakinen
2017-06-19 13:48:10 UTC
Permalink
Post by Lucas Levrel
Post by Olivier Miakinen
Post by Olivier Miakinen
J'ai « set mouse= ».
Et si tu essayais mouse=a ?
Les deux sont intéressants et indiquent une parfaite collaboration
entre la souris et l'éditeur de texte.

Aussi bien en mode commande qu'en mode insertion,
- avec « :set mouse= » :
la roulette fait monter ou descendre le curseur dans le texte
sans faire défiler ce texte, sauf si on arrive en haut ou en bas
du texte visible auquel cas ça fait défiler le contenu du ficher ;
- avec « :set mouse=a » :
la roulette fait défiler le contenu du fichier, le curseur restant
au même endroit dans le texte (donc montant ou descendant en même
temps que le contenu du fichier), sauf si le curseur arrive en haut
ou en bas auquel cas le curseur reste à la première ou la dernière
ligne tandis que le texte défile sous lui.

Je suis vraiment bluffé.
Post by Lucas Levrel
Post by Olivier Miakinen
Je trouve ça très fort. En effet, l'interface graphique est gérée par
cygwin sur Windows, dans une fenêtre de type texte avec ascenseur, à
partir de laquelle je fais un ssh vers un Linux, et lorsque je lance
vim dans ce Linux les mouvements de la roulette sont interprétés dans
vim... mais apparemment pas par vim !
Plus fort encore : si je fais un ssh vers un Unix AIX au lieu d'un Linux
et que j'y lance vim, l'ascenseur reste et la molette continue de gérer
cet ascenseur au lieu du contenu de vim. Mais si à partir de l'AIX je
fais un autre ssh vers un Linux, alors l'interface graphique sur cygwin
le détecte, grise l'ascenseur, et transfère les mouvements de roulette
en commandes vim !
Cygwin (Windows) --(ssh)--> AIX --(ssh)--> Linux --> Vim
| ^
+--------------------------------------------------+
Ça me dépasse aussi, mais pour avoir l'explication il faudra peut-être
changer de groupe...
C'est pourtant le plus adapté je trouve. Tu penses que j'aurais plus
de chances dêtre lu par des gourous sur fcolc par exemple ?
--
Olivier Miakinen
Lucas Levrel
2017-06-20 10:47:01 UTC
Permalink
Post by Olivier Miakinen
Post by Lucas Levrel
Post by Olivier Miakinen
Post by Olivier Miakinen
J'ai « set mouse= ».
Et si tu essayais mouse=a ?
Les deux sont intéressants et indiquent une parfaite collaboration
entre la souris et l'éditeur de texte.
Aussi bien en mode commande qu'en mode insertion,
la roulette fait monter ou descendre le curseur dans le texte
sans faire défiler ce texte, sauf si on arrive en haut ou en bas
du texte visible auquel cas ça fait défiler le contenu du ficher ;
la roulette fait défiler le contenu du fichier, le curseur restant
au même endroit dans le texte (donc montant ou descendant en même
temps que le contenu du fichier), sauf si le curseur arrive en haut
ou en bas auquel cas le curseur reste à la première ou la dernière
ligne tandis que le texte défile sous lui.
Je suis vraiment bluffé.
L'intérêt de la deuxième solution, c'est que le « coller » du serveur X,
qui s'obtient par shift-clic milieu, se fera quasiment toujours au bon
endroit même si la roulette a mis son grain de sel.
Post by Olivier Miakinen
Post by Lucas Levrel
Post by Olivier Miakinen
Cygwin (Windows) --(ssh)--> AIX --(ssh)--> Linux --> Vim
| ^
+--------------------------------------------------+
Ça me dépasse aussi, mais pour avoir l'explication il faudra peut-être
changer de groupe...
C'est pourtant le plus adapté je trouve.
Faudrait tester avec emacs en terminal (emacs -nw) pour voir si le
comportement est spécifique à vim (tu me diras, emacs étant entre autres
un éditeur de texte, il aurait sa place ici...).
Post by Olivier Miakinen
Tu penses que j'aurais plus de chances dêtre lu par des gourous sur
fcolc par exemple ?
Possible, ça se tente. Il existe aussi fco.unix et
fr.comp.applications.x11 mais pas d'autre activité que du spam
dernièrement. Peut-être des gourous lurkeurs (en général les gourous n'ont
pas besoin de poser de questions sur Usenet, donc s'il y en a ils
lurkent...).
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Loading...