无法在 tmux 中调整 vim 拆分的大小

hol*_*lms 49 vim putty tmux

外面一切正常tmux。但是在tmux我不能用鼠标调整vim分割的大小。我set mouse=a在我的.vimrc。有解决方案吗?

.tmux.conf:

$ cat ~/.tmux.conf
set-option -g mode-mouse on
set-option -g mouse-resize-pane on
set-option -g mouse-select-pane on
set-option -g mouse-select-window on
Run Code Online (Sandbox Code Playgroud)

Chr*_*sen 70

Vim选项ttymouse为时,似乎无法拖动状态行来调整拆分的大小xterm;当值是的时候它确实有效xterm2。后一个值将 Vim 配置为请求扩展鼠标报告模式(除其他外)提供更好的拖动支持。此扩展模式仅适用于较新版本的xterm(以及其他兼容的终端模拟器,包括tmux),因此它不是默认值。

您可以使用以下内容.vimrc来设置选项:

set mouse+=a
if &term =~ '^screen'
    " tmux knows the extended mouse mode
    set ttymouse=xterm2
endif
Run Code Online (Sandbox Code Playgroud)

(不过,我不确定这将如何影响实际的屏幕实例,它也使用以screen.开头的 TERM 。)

当你在tmux之外时, TERM 环境变量可能是一个xterm-ish 值,Vim将使用控制序列探测xterm版本t_RV

  • 你提到不知道这将如何影响 *screen*(而不是 *tmux*)。答案是:*screen* 有同样的问题,这个精确的修复也适用于那里。 (3认同)
  • 如果你在一个超过 223 列的终端中工作,你需要将 `ttymouse` 设置为 `sgr`,因为 `xterm2` 不会超出这个范围。你可以用`has("mouse_sgr")`检查你的vim是否支持`sgr`。设置 `sgr` 而不是 `xterm2` 应该总是安全的,因为它向后兼容。参见`:help ttymouse` (2认同)

小智 15

就我而言,它解决了两种情况:宽屏幕的鼠标拆分调整大小和鼠标位置问题。

修复方法是:

if has("mouse_sgr")
    set ttymouse=sgr
else
    set ttymouse=xterm2
end
Run Code Online (Sandbox Code Playgroud)