代码: 全选
:silent !echo -ne "\e]12;IndianRed2\007"
let &t_SI=\e]12;RoyalBlue1\007"
let &t_EI=\e]12;IndianRed2\007"
autocmd VimLeave * :!echo -ne "\e]12;green\007"
这里用到了xterm改变光标颜色的escape sequence,根据定义
,xterm改变光标颜色的命令是:
代码: 全选
OSC Ps ; Pt BEL
但是,在screen里面,上面的代码就不行了。原因是screen的escape sequence同xterm的,是有不同的,而且screen没有提供改光标颜色的命令,怎么办?答案是,screen可以把escape sequence传给host的终端的,格式如下
代码: 全选
ESC P Sequence ESC \
代码: 全选
"dynamic cursor color for xterm \033=>\e 007=>\a (BEL)
if &term =~ "xterm"
:silent !echo -ne "\e]12;IndianRed2\007"
let &t_SI=\e]12;RoyalBlue1\007"
let &t_EI=\e]12;IndianRed2\007"
autocmd VimLeave * :!echo -ne "\e]12;green\007"
elseif &term =~ "screen" " screen in urxvt or xterm
:silent !echo -ne "\eP\e]12;IndianRed2\007\e\\"
let &t_SI=\eP\e]12;RoyalBlue1\007\e\\"
let &t_EI=\eP\e]12;IndianRed2\007\e\\"
autocmd VimLeave * :!echo -ne "\eP\e]12;green\007\e\\"
endif
不过......这样折腾有个side effect,那就是:你进入vim,光标的颜色改变了,然后你转到其他窗口,会发现光标跟xterm里面的一模一样的....