在cygwin下的tmux中运行vim时,如何具有不同的光标形状?

而没有tmux这些行足以实现我想要的功能:

let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"


但是无论如何我的tmux都会破坏它-光标具有块状,无论我处于哪种vim模式。
Cygwin x86
TMUX 1.9a
Vim 7.4.726(与+ cursorshape编译)
用于Cygwin终端或Cmder(两者方式,光标形状只能在没有TMUX的情况下工作) :echo $TERM


我已经尝试过但没有成功的事情: “外观>光标”(它会永久更改光标,vim模式仍不会更改)


评论

Vim带有'+ cursorshape'功能吗?

检查终端设置。这个问题看起来类似于superuser.com/questions/634326/…

您正在使用哪个终端仿真器?您是否尝试过让let&t_SI =“ \ Ptmux; \ \ ] 50; CursorShape = 1; BlinkingCursorEnabled = 1 \ x7 \ \\”并让&t_EI =“ \ Ptmux; \ \ ] 50; CursorShape = 0; BlinkingCursorEnabled = 0 \ x7 \ \\“?

@jjaderberg iTerm的转义序列?某些注意事项仅在iTerm中有效:iTerm Doc> iTerm2支持几种非标准的转义码。它们可能无法在tmux或屏幕上正常工作,并且可能对其他终端仿真器产生未知的影响。请谨慎操作。

我再检查一次我的软件,所有版本都与您的软件相同,但薄荷选项中的$ TERM是tmux screen-256color中的xterm-256color。 tmux的版本为1.9(您的版本为1.9a)。我已经在tmux vim -u NULL中启动了vim(-u NULL表示没有配置)。游标形状在任何模式下都是块状,但是当我分配t_SI和t_EI形状时,按预期从块状(正常模式)切换到I(插入模式)。您可以尝试使用空的.vimrc启动vim,而无需任何颜色和插件吗?

#1 楼

看来问题在于tmux不会将更改光标的转义码发送到终端仿真器。您需要将所需的转义代码包装在一个特殊的序列中,该序列告诉tmux应该将其传递到外部终端。 \<Esc>Ptmux;\<Esc> ... \<Esc>\是您的转义序列。

因此,请尝试在您的...中执行以下操作:模拟器或cygwin,所以我无法测试此代码。但是该方法对我有用(我只是包装了其他适合我终端的转义代码)。

评论


这甚至更好-无需更改我的.bashrc。谢谢。

–科萨克
15年5月29日在13:21

#2 楼

$TERM环境变量的正确值非常重要。确保它与screen-256color不同。例如,将其设置为xterm-256color