10

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

set mouse=a

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

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

我试过了:

set mouse=n

这可以防止文本在我尝试选择时突出显示,但它也可以防止 iTerm2 突出显示文本。

更新:

多亏了这篇文章,我意识到按住选项键几乎可以得到我想要的行为,但这相当乏味。我真的不想每次选择时都按住选项键。想法?

更新2:

感谢评论中的建议,我能够更接近一点。我需要重新编译 vim 以便+clipboard启用:

brew install vim

现在,如果我愿意忍受没有将正在进行的突出显示作为选择文本,那么我至少仍然可以通过在视觉模式选择后将其拉到剪贴板中来获取它。如果我真的想要更好的选择人体工程学,我可以按住alt/option并获得原始的 iTerm2 选择行为。

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

4

3 回答 3

4

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

添加以下内容将在按下键时再次.vimrc切换mouse=amouse=和返回:,

noremap , :if &mouse == "" \| set mouse=a \| else \| set mouse=  \| endif<CR><CR>
于 2015-05-11T11:54:20.790 回答
3

通过您的更新,您说您几乎可以得到您想要的,但是选择不会自动复制。

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

详情请参阅:help clipboard-autoselect

于 2015-03-05T18:24:35.893 回答
1

简短的回答:我相信这是不可能的!

但通常很难证明没有答案。所以我会试着给出我的想法,我希望你我错了。所以这里有很长的答案:

您的终端在“正常”条件下处理鼠标,命令行应用程序对此一无所知。但有时,应用程序请求控制终端功能,以便能够绑定鼠标事件来做“事情”。

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

因此,即使正在运行的应用程序可以控制光标,当您使用选项键也能够进行选择时,这是对终端仿真器(在您的情况下为iTerm2)的破解,以获得您实际期望的行为。

我对您的建议是切换到brew install macvim为 vim 安装 gui 前端的 macvim ( )。然后您将获得可以正常工作的选择,尽管它只是在终端之外。

于 2015-03-04T20:52:36.143 回答