【发布时间】:2023-03-28 20:12:02
【问题描述】:
没有什么比幻像触摸板点击导致我的文本在某处随机输入更让我讨厌的了。我几乎宁愿将输入解释为随机的 Vim 命令。无论如何,我确实有使离开插入模式在视觉上非常显眼的配置,所以这不是问题。
我应该怎么做?我不认为有办法在 Vim 中映射或拦截鼠标事件。我希望也许有某种自动命令会在点击时触发?
我在这里只讨论命令行 Vim。不是 MacVim 之类的。
【问题讨论】:
标签: vim
没有什么比幻像触摸板点击导致我的文本在某处随机输入更让我讨厌的了。我几乎宁愿将输入解释为随机的 Vim 命令。无论如何,我确实有使离开插入模式在视觉上非常显眼的配置,所以这不是问题。
我应该怎么做?我不认为有办法在 Vim 中映射或拦截鼠标事件。我希望也许有某种自动命令会在点击时触发?
我在这里只讨论命令行 Vim。不是 MacVim 之类的。
【问题讨论】:
标签: vim
您也可以将鼠标映射为什么都不做:
inoremap <LeftMouse> <Nop>
由 OP 编辑:这一点点见解是解决问题的完美方法。
我更喜欢确保在插入模式下左键单击会被忽略。我非常喜欢这个答案的原因是,它不仅可以防止光标移动(使我的文本出现在我随机幻单击的位置),而且还可以防止 Vim 导致那些我正在键入的键被解释为 Vim 命令,这是当左键单击绑定到 <ESC> 时会发生的情况。
但是我发现有时我会顽固地继续敲击鼠标以更改窗口即使我将整个状态栏设置为在插入模式下更改颜色,我仍然会在插入模式下更改窗口,主要是因为我愚蠢的,尽管单击地图,仍然可以触发两次,三次和四次左键的默认绑定,因为在这种情况下,我只是本能地捣碎了我正在点击的按钮(在这种情况下是左键),这是一种根深蒂固的行为通过不稳定/滞后的网络连接(考虑到 TCP 的功能,这实际上仍然没有任何意义......)
所以,为了解决这个问题并配置 Vim 以迫使我意识到我处于插入模式,这里有一组更加安全的绑定。它清除了左键单击的所有默认功能,导致各种视觉模式选择生效(如果我继续取消,我仍然会在其他地方回到插入模式,我打算纠正的原始行为):
inoremap <LeftMouse> <Nop> "normally causes visual selection mode
inoremap <2-LeftMouse> <Nop> "normally causes visual word selection mode
inoremap <3-LeftMouse> <Nop> "normally causes visual line selection mode
inoremap <4-LeftMouse> <Nop> "normally causes visual block selection mode
【讨论】:
使用:set mouse=a(或至少:set mouse=i),您可以使用以下映射:
inoremap <LeftMouse> <Esc>
请参阅:help mouse 和:help mouse-using 了解更多信息。
【讨论】:
我使用了 Nikita Kouevda 的版本,但稍作调整以避免多次点击:
inoremap <LeftMouse> <Esc><LeftMouse>
这会将您带出,然后执行默认操作。与他的鼠标模式一样,需要:
:set mouse=a
【讨论】:
inoremap <LeftMouse> <Esc><LeftMouse>。 (通过“console-vim”,我实际上指的是 Windows 机器上的 vim-gtk,由 Pengwin-WSL 通过 wsltty 托管。这将是一个独特的问题,因为并非所有 Windows WSL 终端都支持鼠标单击2019 年 12 月 11 日。)