我最近在vim中启用了鼠标模式:
set mouse=a
Run Code Online (Sandbox Code Playgroud)
我喜欢滚动,但突出文字很糟糕.我在Mac上的iTerm2中使用vim.现在,当我选择文本时,突出显示非常慢(仅在突出显示拖动完成后突出显示),突出显示的文本不会自动复制到我的剪贴板中,就像使用iTerm2选择时一样.
有没有办法在vim中允许基于鼠标/触控板的滚动而不使用鼠标进行可视模式文本选择?
我试过了:
set mouse=n
Run Code Online (Sandbox Code Playgroud)
当我尝试选择时,这会阻止文本突出显示,但它也会阻止iTerm2突出显示文本.
更新:
感谢这篇文章,我意识到我可以通过按住选项键来获得我想要的几乎所有行为,但这相当繁琐.我真的不想在每次选择时都按住选项键.思考?
UPDATE2:
感谢评论中的建议,我能够更加接近.我需要重新编译vim +clipboard才能启用:
brew install vim
Run Code Online (Sandbox Code Playgroud)
现在,如果我愿意忍不住将正在进行的高亮显示作为选择文本,那么我至少可以在视觉模式选择之后将其放入剪贴板中.如果我真的想要更好的选择人体工程学,我可以按住alt/option并获得原始的iTerm2选择行为.
我希望我能扭转这些模式.例如,默认情况下通过按住alt/option并启用可视模式行为来实现的行为,当我想要一个键时...但是哦,这已经足够了.
简短的回答:我相信这是不可能的!
但通常很难证明没有答案。所以我会尝试对此提出我的想法,我希望你我是错的。所以这里是长答案:
您的终端在“正常”条件下处理鼠标,而命令行应用程序对此一无所知。但有时,应用程序请求控制终端功能,以便能够绑定鼠标事件来执行“操作”。
这就是当您设置 mouse=a 时发生的情况:您更改终端功能以告知所有鼠标事件都定向到正在运行的应用程序,因此由 vim 来绑定或不绑定操作(例如滚动、选择、粘贴等)。 .)。
因此,当您使用选项键进行选择时,即使正在运行的应用程序可以控制光标,这是对终端模拟器(在您的情况下为iTerm2)的黑客攻击,以获得您实际期望的行为。
我给你的建议是切换到 macvim ( brew install macvim),它为 vim 安装了一个 gui 前端。然后你就会有一个可以正常工作的选择,尽管它只是在终端之外。