在Ubuntu 16.04上用键盘箭头键解除鼠标滚动

时间:2017-08-18 21:21:54

标签: ubuntu vim key-bindings

我在Ubuntu 16.04上使用vim,我的终端是konsole。

让我痛苦的问题是: 每次当我尝试使用鼠标的中间按钮在vim中粘贴某些东西时,我不小心滚动了鼠标滚轮而感到不安。光标飞走了,我将内容粘贴在错误的地方。

所以我想在vim中禁用鼠标滚动。然而,我在网上找到的每个解决方案似乎都不适合我。最后我意识到我的< ScrollWheelUp / Down>系统广泛绑定到箭头键(↑和↓)。通过将箭头键重新映射到< nop>,也禁用鼠标滚动。因此,除非我解除绑定,否则我不能在vim中禁用鼠标滚动。

不幸的是,我没有找到任何解决方案。有人可以帮我这个吗?

3 个答案:

答案 0 :(得分:0)

我想,你仍然可以在不使用鼠标的情况下将东西粘贴到vim中。因此,您无需设置任何东西来解决您的问题。

只需将vim光标放到要粘贴文本的位置,键入 Ctrl + v或 Cmd + v。

答案 1 :(得分:0)

Finnaly我找到了解决方案 我在这里发布我的解决方案,以防有人对我有同样的问题:

似乎是取消绑定的唯一方法< ScrollWheelUp / Down>键盘<向上/向下>是重新编译你的终端。因为在大多数情况下,绑定是硬编码的。

在我的情况下,我使用konsole作为我的终端。所以我所做的是:

1. git克隆konsole源代码 git clone git://anongit.kde.org/konsole.git

2.在源文件中konsole/src/TerminalDisplay.cpp
在第2501行和第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);
       }
       ...
    }

注释“else {**}”部分以防止konsole将轮子移动绑定到箭头键按下。

3.重新编译源代码包。

重新启动终端然后问题就会消失。

如果你使用其他终端,它应该非常类似于完成此操作。 ** 1)下载源代码包; 2)修改相应的代码; 3)重新编译**就是这样!

答案 2 :(得分:0)

如果您只是想从其他地方粘贴到Vim中,我建议使用鼠标鼠标中键单击方法并让Vim直接使用系统剪贴板。我认为以下链接应该有所帮助:

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