2017-08-18 2 views
-1

J'utilise vim sur Ubuntu 16.04, mon terminal est konsole. Le problème me fait souffrir est: Chaque fois que j'ai essayé de coller quelque chose en utilisant le bouton du milieu de ma souris dans vim, j'ai été dérangé en faisant défiler accidentellement la roue de ma souris. Le curseur s'est envolé et j'ai collé le contenu au mauvais endroit.défilement de la souris avec les touches fléchées du clavier sur Ubuntu 16.04

Alors j'ai essayé de désactiver le défilement de la souris dans vim. Cependant, chaque solution trouvée en ligne ne semblait pas fonctionner pour moi. Enfin, j'ai réalisé que mon <ScrollWheelUp/Down> était largement lié aux touches fléchées (↑ et ↓). En remappant les touches fléchées sur <nop>, le défilement de la souris a également été désactivé. Donc, à moins que je ne détache ceci, je ne peux pas désactiver le défilement de la souris dans vim.

Malheureusement, je n'ai trouvé aucune solution pour le faire. Quelqu'un peut il m'aider avec ça?

Répondre

0

Je pense que vous pouvez toujours coller quelque chose dans vim sans utiliser de souris du tout. Ainsi, vous n'avez pas besoin de configurer quoi que ce soit pour résoudre votre problème.

Il suffit de mettre le curseur de vim à l'endroit que vous voulez que le texte soit coller, tapez Ctrl + v ou Cmd + v.

+0

Je suis désolé Ctrl + V ou Cmd + V ne fait pas les choses coller dans vim. Il existe des raccourcis clavier pour coller du contenu dans le terminal Linux, mais ce n'est pas Ctrl + V ou Cmd + V comme dans Windows ou OSX. Et je ne cherche pas de raccourci clavier. Je suis à la recherche d'une solution exacte pour que le collage des boutons du milieu de la souris fonctionne parfaitement dans vim. Si vous avez de l'expérience dans le développement de logiciels sur Linux, vous devriez savoir ce que je veux dire. – Clark

+0

OK. Mais, à mon humble avis, vous devriez envisager de ne pas utiliser la souris du tout lors de l'utilisation de vim. La vraie puissance de vim est dans la reliure clavier/clé. – wlisrausr

0

finnaly J'ai trouvé la solution.
Je poste ma solution ici au cas où quelqu'un a le même problème avec moi:

Il semble que la seule façon de délier <ScrollWheelUp/Bas> au clavier <Up/Down> est de recompiler votre Terminal. Parce que dans la plupart des cas, la liaison est codée en dur.

Dans mon cas, j'utilise konsole comme terminal. Donc ce que je l'ai fait était de:

1. git clone le code source konsole par
                                      git clone git://anongit.kde.org/konsole.git

2. Dans la source fichier
                                      konsole/src/TerminalDisplay.cpp
il y a un morceau de code entre la ligne 2501 et 2522:

if (_mouseMarks) { 
     const bool canScroll = _scrollBar->maximum() > 0; 
     if (canScroll) { 
      _scrollBar->event(ev); 
      _sessionController->setSearchStartToWindowCurrentLine(); 
      _scrollWheelState.clearAll(); 
     } 
     else { 
     // assume that each Up/Down key event will cause the terminal application 
     // to scroll by one line. 
     // 
     // to get a reasonable scrolling speed, scroll by one line for every 5 degrees 
     // of mouse wheel rotation. Mouse wheels typically move in steps of 15 degrees, 
     // giving a scroll of 3 lines 

     const int lines = _scrollWheelState.consumeSteps(static_cast<int>(_fontHeight * qApp->devicePixelRatio()), ScrollState::degreesToAngle(5)); 
     const int keyCode = lines > 0 ? Qt::Key_Up : Qt::Key_Down; 
     QKeyEvent keyEvent(QEvent::KeyPress, keyCode, Qt::NoModifier); 

     for (int i = 0; i < abs(lines); i++) 
      emit keyPressedSignal(&keyEvent); 
     } 
     ... 
    } 

commentaire sur le "else {**}" partie pour éviter konsole de relier le mouvement de la roue à la touche fléchée.

3. recompilez le package de code source.

Redémarrez votre terminal, puis le problème aurait disparu.

Si vous utilisez un autre terminal, il devrait être assez similaire pour ce faire. ** 1) Télécharger le paquet de code source, 2) modifier le code correspondant; 3) re-compiler ** C'est tout!

0

Si vous essayez simplement de coller dans Vim à partir d'un autre endroit, je vous recommande de ne pas utiliser la méthode du clic au milieu de la souris et de faire en sorte que Vim travaille directement avec votre presse-papiers. Je pense que le lien ci-dessous devrait être utile:

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

+0

Merci de m'avoir fourni d'autres méthodes. Cependant, je pense que la méthode la plus pratique pour moi est d'utiliser le bouton du milieu, parce que c'est simple et rapide. J'ai résolu le problème de la roue et je suis tout à fait d'accord avec ce que j'ai maintenant. Merci quand même! – Clark