使用鼠标中键单击粘贴文本进入插入模式

使用鼠标中键单击粘贴文本进入插入模式

如何关闭vim单击鼠标中键时自动进入编辑模式?

背景:我喜欢创建命令字符串,例如JJJj连接三行,然后向下一行,用鼠标选择该命令字符串,然后vim使用鼠标中键一次又一次地将其粘贴到其中。然而,最近,vim单击鼠标中键自动进入插入模式,导致该程序无法正常工作。我不知道这是它vim本身的变化还是我的发行版(Gentoo)的某些默认配置的变化,但我需要一种方法来再次关闭它。

澄清一件事:我没有set mouse=a设置(无论是在我的~/.vimrc还是其他地方。因此,例如,鼠标左键单击不会将光标移动到单击的位置。这可能就是为什么[cas]es提示的原因使用set mouse=in 并~/.vimrc不能解决这个问题。

另外,我说的是vim(in xterm),而不是gvim

系统详细信息:

  • Gentoo Linux
  • 普通 Linux 4.9.13
  • X.Org X 服务器 1.19.3
  • XTerm(327)
  • vim 8.0.386(似乎是由 Gentoo 修改的)

答案1

这已经完全回答了这里。有关详细信息和替代解决方案,请参阅优秀的链接答案。

简短的回答:放入您的文件 :set t_BE=中。.vimrc

答案2

尝试使用 禁用 vim 的鼠标模式:set mouse=。将其添加到您的~/.vimrc(不带:)。您可能还需要注释掉任何现有set mouse=行(如果有)。

这将禁用所有 vim 的鼠标处理,返回到鼠标的默认 X 处理 - 即左键单击开始选择,右键单击扩展选择,中键单击粘贴。特别要注意的是,在 vim 窗口中单击鼠标将会不是移动鼠标光标,或与 vim 的视觉选择模式交互。


:map顺便说一句,您是否考虑过使用或 录制宏,而不是在鼠标上使用 vim 内置功能的次标准版本?

将命令序列映射到按键是很容易的,例如:map , JJJj将它们映射到逗号键。

或者使用q后跟字母或数字将宏记录到寄存器中。例如qaJJJjq绑定JJJj@a.然后,您只需键入 即可运行该宏@a。您还可以记录大量宏并将它们映射到,任何需要的地方,以在多个常用操作之间快速切换。例如:map , @a

我使用,(逗号)键进行短期(即当前编辑会话)映射,因为它没有映射到我曾经使用过的任何内容。对于永久映射,我使用功能键并将它们设置在我的~/.vimrc文件中。例如,map <F5> {!}par^V^M}映射F5键将光标移动到当前段落的开头,通过par段落重新格式化程序将其传递,然后将光标移过该段落(vim具有内置的段落重新格式化功能,但我更喜欢par)。

请注意,映射和宏可以根据需要任意复杂。使用 录制宏q将记录您键入的任何内容,直到您q再次键入。如果您想在命令中嵌入 ESC 或回车等控制字符:map,您可以在输入地图时使用Ctrl-Vaka来“转义”它们 - 例如^V

:map , Do^V^[!!date -R^V^MkJ

该映射,将当前行的剩余部分(从当前光标位置开始)替换为 RFC-2822 格式的当前日期和时间。

或者如果你想搜索一个模式,连接三行,然后再次搜索,你可以这样做:

:map , JJJn

然后使用 执行第一次搜索/pattern<enter>,然后按,进行连接并搜索下一个匹配项。此时,您可以选择是否加入并再次搜索(,再次按)或仅再次搜索(按n)或完全执行其他操作。当我不想进行简单的搜索和替换但想每次都做出决定时(例如,当可能有太多误报匹配并且花费的时间超过其值得的时间时),我通常会这样做制作完美的正则表达式搜索模式)

上面只是一个非常简单的示例,说明了它的用途 - 这与仅键入3J然后交替n按 find-next 和.重复上一个命令没有太大区别......当然,您可以:map , .n。当您需要重复一系列命令时,它确实变得有用不能重复.

相关内容