我在Ubuntu 16.04上使用vim,我的终端是konsole。
让我痛苦的问题是: 每次当我尝试使用鼠标的中间按钮在vim中粘贴某些东西时,我不小心滚动了鼠标滚轮而感到不安。光标飞走了,我将内容粘贴在错误的地方。
所以我想在vim中禁用鼠标滚动。然而,我在网上找到的每个解决方案似乎都不适合我。最后我意识到我的< ScrollWheelUp / Down>系统广泛绑定到箭头键(↑和↓)。通过将箭头键重新映射到< nop>,也禁用鼠标滚动。因此,除非我解除绑定,否则我不能在vim中禁用鼠标滚动。
不幸的是,我没有找到任何解决方案。有人可以帮我这个吗?
答案 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直接使用系统剪贴板。我认为以下链接应该有所帮助: