在vim中启用鼠标滚动而不是鼠标视觉选择?

时间:2015-03-04 20:10:47

标签: vim iterm2

我最近在vim中启用了鼠标模式:

set mouse=a

我喜欢滚动,但突出显示文字很糟糕。我在Mac上的iTerm2中使用vim。现在,当我选择文本时,突出显示非常慢(仅在突出显示拖动完成后突出显示),突出显示的文本不会自动复制到我的剪贴板中,就像使用iTerm2选择时一样。

有没有办法在vim中允许基于鼠标/触控板的滚动而不使用鼠标进行可视模式文本选择?

我试过了:

set mouse=n

当我尝试选择时会阻止文本突出显示,但它也会阻止iTerm2突出显示文本。

更新

感谢this post我意识到通过按住选项键我几乎可以获得我想要的行为,但这是相当乏味的。我真的不想在每次选择时都按住选项键。想法?

UPDATE2:

感谢评论中的建议,我能够更加接近。我需要重新编译vim才能启用+clipboard

brew install vim

现在,如果我愿意忍不住将正在进行的重点视为选择文本,那么我至少可以通过在视觉模式选择之后将其放入剪贴板中来获取它。如果我真的想要更好的选择人机工程学,我可以按住alt/option并获得原始的iTerm2选择行为。

我希望我能扭转这些模式。例如,默认为通过按住alt/option来完成的行为,并在我想要一个键时启用可视模式行为......但是哦,这已经足够了。

3 个答案:

答案 0 :(得分:2)

我发现最好的是为鼠标模式添加一个切换。

将以下内容添加到.vimrc会从mouse=a切换到mouse=,并在按下,键时再次返回:

noremap , :if &mouse == "" \| set mouse=a \| else \| set mouse=  \| endif<CR><CR>

答案 1 :(得分:1)

简短回答:我认为这是不可能的!

但通常很难证明没有答案。所以我会试着考虑一下,我希望你错了。所以这里有很长的答案:

您的终端正常&#34;正常&#34;条件,处理鼠标和命令行应用程序不知道任何相关的事情。但有时候,应用程序会请求控制终端功能,以便能够将鼠标事件绑定到&#34; stuff&#34;。

当您设置mouse = a时会发生什么:您更改终端功能以告知所有鼠标事件都指向正在运行的应用程序,因此它可以通过vim来绑定或不绑定动作(例如滚动,选择,粘贴等)。

因此,即使正在运行的应用程序控制了游标,您也可以使用选项键进行选择,这是终端模拟器上的黑客攻击( iTerm2 在您的情况下)获得你实际期望的行为。

我给你的建议是切换到为vim安装gui前端的macvim(brew install macvim)。然后你会选择工作得很好,尽管它只是在终端之外。

答案 2 :(得分:1)

根据您的更新,您说您几乎可以得到您想要的内容,但不会自动复制选择。

为此,您只需要set clipboard+=autoselect guioptions+=a

有关详细信息,请参阅:help clipboard-autoselect