提问人:farnsy 提问时间:9/1/2023 最后编辑:romainlfarnsy 更新时间:9/1/2023 访问量:83
禁用鼠标的 GNOME 终端中的 Neovim 在滚动时移动光标
Neovim in GNOME-terminal with mouse disabled moves cursor when scrolled
问:
我在 GNOME 终端中使用 Neovim,并设置了禁用所有鼠标功能的选项。这是我想要的方式,因为我通常不希望鼠标移动我的光标。mouse=
当我使用鼠标滚轮时,无论终端发送什么事件,都会上下移动光标。我宁愿让滚轮激活真正的滚动(如和),如果发生这种情况。请注意,我不想启用 Neovim 的鼠标处理或类似功能。<C-y>
<C-e>
mouse=a
mouse=a
当我使用鼠标滚轮并且 Neovim 的鼠标处理被禁用时,当它收到终端发送的任何事件时,我如何修改 Vim 的行为?
Fedora 下的 Neovim 0.9.1。
答:
1赞
Kyle F. Hartzenberg
9/1/2023
#1
此行为是由终端模拟器将滚动功能映射到箭头键引起的。您可以在配置中添加以下行,以禁用与 Neovim 的所有鼠标交互(在某些模式下):
对于 Lua ():.lua
vim.opt.mouse = ""
vim.keymap.set({ "", "i" }, "<up>", "<nop>")
vim.keymap.set({ "", "i" }, "<down>", "<nop>")
要启用“实际滚动”,只需将右侧映射(即 )分别更改为 和 和 键。<nop>
<c-y>
c-e
<up>
<down>
对于 VimL (.vim
)
set mouse=
noremap <Up> <nop>
inoremap <Up> <nop>
noremap <Down> <nop>
inoremap <Down> <nop>
要查找存在的映射模式,请参见。:h map-table
注意:将密钥映射到表示该密钥将不再执行操作。如果需要 和 键保留其原始功能,同时仍禁用鼠标滚动功能,则可能需要考虑修改终端仿真器的行为。<nop>
<up>
<down>
评论
0赞
Friedrich
9/1/2023
这也禁用了向上和向下箭头键。
0赞
Kyle F. Hartzenberg
9/1/2023
@Friedrich 是的,除了改变终端模拟器的行为,我不相信还有另一种选择吗?我不记得我上次在 Neovim 中使用箭头键是什么时候了(有些键盘甚至没有它们)。我怀疑对于大多数 Vim/Neovim 用户来说,这些键会被遗漏,因为该应用程序的重点是以键盘为中心的高效移动/动作。箭头键离主行很远,因此在 Vim/Neovim 中摆脱依赖它们的习惯可能是个好主意。
0赞
Kyle F. Hartzenberg
9/1/2023
@Friedrich 此外,我的答案还包括更改为 RHS 映射的选项,以及启用某种级别的箭头键功能。这两种解决方案都解决了 OP 的问题(该问题没有列出对箭头键功能保持不变的要求)。如果你想到更好的方法,我很乐意学习。<c-y>
<c-e>
0赞
Friedrich
9/1/2023
禁用两个键是一个值得一提的副作用。这就是我所做的,不多也不少,因为你的答案没有。是否接受这种权衡的决定留给 OP。
1赞
farnsy
9/2/2023
很好的答案。它对我来说效果很好。事实证明,我在 vim 中没有使用向上/向下箭头,所以我什至没有注意到它们被重新映射。欣赏你的彻底性。
评论