绕过可视模式时,为什么Vim光标跳至所选文本?

时间:2018-12-12 10:22:38

标签: vim

Vim自动可视模式可能很烦人。只要您单击鼠标左键并在其中选择文本,它就会切换到可视模式。幸运的是,可以通过在终端中选择文本时按住Shift键来绕过此行为。这种旁路非常有用,可以快速使用,而无需先配置vim。

但是我最近注意到,当终端将某项检测为链接时(例如apache vhost配置中的/var/www/example.com/目录),我尝试使用mouse + shift-key组合来选择它,它不允许我复制选定的文本,而是跳到文本的下一个相似行,同时再次启用自动视觉模式。

为什么会发生这种情况,我该如何绕过呢?

PS:我知道vimrc中的:set mouse- = a,但是当我在不同的服务器上工作时,我不想每次在新服务器上都必须编辑vimrc。

3 个答案:

答案 0 :(得分:1)

vim唯一的文本选择是可视模式。因此,您用mouse=a告诉vim它应该使用鼠标来选择文本。您期望什么?

您始终可以完全不用鼠标来复制文本("+yy,如果有剪贴板支持)。

我无法通过链接重现您的行为。没有插件也会发生这种情况吗?

但是无论如何,如果您不想在鼠标上使用视觉模式,则必须修改mouse设置,并停止告诉vim在鼠标上使用视觉模式。

答案 1 :(得分:0)

如果要在主机上设置特定设置,而在其他服务器等上没有设置,则可以在if中使用.vimrc语句来指定设置为哪个系统活跃。例如:

"My Linux machine
if readf('/etc/machine-id') == ['your-machine-id']
    set mouse=a
endif

"Only on Macs
if system('uname') == "Darwin\n"
    set mouse=a
endif

答案 2 :(得分:0)

有人在设置mouse=a。您可以通过执行:verbose set mouse来找到有罪的人。

然后,您必须更改它,或者必须为用户创建.vimrc。据我了解,您的情况可能并不容易。

您也可以使用set mouse-=a代替set mouse=来禁用所有鼠标内容。这就是我的首选,它节省了两次击键:-)。


这就是我处理此问题的方式。它可能对您而言可行或不可行。

我有一个名为.rks的文件,我将它压缩到必须登录的每台服务器上。 登录后的第一个命令始终为

. ./.rks

这将设置我的shell环境(提示,别名,vi编辑模式等)并创建一个文件 称为~/.vimrc.rks(如果不存在),其中包含我的基本Vim设置 (例如set mouse=)。最后,它导出变量VIMINIT

export VIMINIT="source $HOME/.vimrc.rks"

现在Vim在启动时提供了~/.vimrc.rks的资源,我得到了设置。

我这样

  • 只需要将一个文件传输到所有计算机。其他文件(例如 采购该文件时会创建.vimrc.rks
  • 无需更改任何默认文件即可进行我的个人设置。其他人也可能使用相同的用户名登录。

我刚刚了解到,我可以使用ssh LocalCommand配置来自动传输安装文件。参见此answer on serverfault