我在 GNOME 终端中使用 Neovim,并将
mouse=
选项设置为禁用所有鼠标功能。这就是我想要的方式,因为我一般不希望鼠标移动我的光标。
当我使用鼠标滚轮时,无论终端发送什么事件,都会上下移动光标。我宁愿让scrollsheel激活真正的滚动(如
<C-y>
和<C-e>
),这就是如果mouse=a
会发生的情况。请注意,我不想使用 mouse=a
或类似功能启用 Neovim 的鼠标处理。
当我使用鼠标滚轮且 Neovim 的鼠标处理被禁用时,当 Vim 收到终端发送的任何事件时,如何修改 Vim 的行为?
Fedora 下的 Neovim 0.9.1。
此行为是由终端仿真器将滚动功能映射到箭头键引起的。您可以将以下行添加到配置中以禁用与 Neovim 的所有鼠标交互(对于所有模式):
对于 Lua (
.lua
):
vim.opt.mouse = ""
vim.keymap.set({ "", "!", "t", "l" }, "<up>", "<nop>")
vim.keymap.set({ "", "!", "t", "l" }, "<down>", "<nop>")
要启用“真实滚动”,只需将
<nop>
和 <c-y>
键的右侧映射(即 c-e
)分别更改为 <up>
和 <down>
。
对于 VimL (
.vim
)
set mouse=
map <Up> <nop>
map! <Up> <nop>
tmap <Up> <nop>
lmap <Up> <nop>
map <Down> <nop>
map! <Down> <nop>
tmap <Down> <nop>
lmap <Down> <nop>
要查找存在哪些地图模式,请参阅
:h map-table
。