【问题标题】:Focus follow mouse in vimvim中的焦点跟随鼠标
【发布时间】:2012-12-04 21:12:14
【问题描述】:

我知道 mousefocus 选项只应该在 gVim 中工作。但我想知道,如果可以让控制台 Vim 响应鼠标点击切换到不同的窗口,是否也不能轻松地添加跟随鼠标移动?

我是 xmonad 用户,我喜欢关注指针功能,我在用 Vim 编写时会查看和浏览大量 pdf,如果我不必保持精神状态,我会更快乐在两种不同类型的焦点变化之间来回切换。

如果这完全不可能,我猜想在终端的新实例中打开新的 Vim 窗口(如 :split)并不容易?

【问题讨论】:

  • 这是我迁移到 neovim 的原因,在该neovim 可以使用鼠标切换拆分窗格,并且鼠标在窗格内滚动可以按预期工作

标签: vim mousemove


【解决方案1】:

添加它一点也不简单。在终端中使用鼠标通过 vim 向终端发送控制代码,请求将鼠标操作作为输入流的一部分发送。终端只报告点击而不是指针位置的变化,所以 vim 无法知道鼠标在哪里。

随着重大变化,支持 X 的 vim 可能可以直接从 X 服务器获取指针活动,但这可能会按像素而不是按字符报告,因此需要做进一步的工作才能实现确定指针下当前是哪个 vim 窗口。

【讨论】:

  • 感谢您的回答。我想我知道如何以一种丑陋的方式解决这个问题。如果我想出任何有用的东西,我会在这里发布。
  • @ErcanErden 滚动有什么意义?对我来说,它不能以与这个问题相关的方式起作用;使用滚轮滚动被选中的 vim 窗口,而不是指针所在的那个。
  • @qqx : 在我的机器(linux,urxvt-unicode)上,它在鼠标指针下滚动 vim 窗口(垂直或水平分割),但光标仍停留在原始窗口中。
【解决方案2】:
set mouse=a

应该可以解决问题,但它可能取决于您的终端模拟器。见:help 'mouse'

【讨论】:

  • 那还是需要点击鼠标来选择窗口,问题是如何在不点击窗口的情况下选择指针下的窗口。
【解决方案3】:

这适用于 Windows 7/Cygwin 32bit mintty/vim 7.3:(我不使用 gvim!)

安装了这个:http://ehiti.de/katmouse/,我可以滚动光标下的窗口,而无需单击选择窗口,单击选择单个 vim-windows 也可以。如果另一个窗口与它重叠,它不会将 vim 窗口拉到前台,如果这是你想要的。仍然可以滚动它而无需先单击选择它。

所以:
检查是否存在用于您的发行版的软件包,该软件包在操作系统级别实现您所需的鼠标行为。当这适用于我在 cygwin 中自编译的 vim 时,它可能也适用于 linux 上的控制台 vim。

这里的这篇文章作为证据,这完全有可能,这就是没有发表评论的原因。当我再次使用 linux 时,我会进一步调查并更新这篇文章,但这可能需要一段时间。

set mouse=a 上:vim 帮助说明您需要一个能够处理鼠标输入的终端,可以在here 找到更多信息。 :help ttymouse 也可能会有所帮助,即如果您有一个符合 xterm 的控制台,但 :help term 设置为其他内容。


更新:(新安装的带软件包的 Fedora 19,没有自编译的东西。)

Fedora 19 + se mouse=a = 在单个控制台 vim 窗口中滚动,同时打开多个相邻的缓冲区也可以独立工作。使用的窗口管理器是 LXDE。

【讨论】:

  • 您是说这适用于 vim 窗口(在单个操作系统级窗口中打开多个文件)还是仅适用于操作系统级窗口?如果某些任意程序会导致它适用于 vim windows,我会感到非常惊讶。
  • @qqx 我描述的行为在打开单个终端仿真器窗口(使用 mintty.exe)时起作用,控制台 vim 在其中运行。控制台 vim 本身有几个并排打开的窗口。只要 KatMouse 正在运行,如果鼠标光标位于相关 vim 窗口的边界内,我就可以滚动每个 vim 窗口。不使用 screen 或 tmux 之类的东西。需要se mouse=a
猜你喜欢
  • 2011-04-16
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多