Re: vim退出乱码
发表于 : 2009-12-02 15:51
有可能是gnu/readline 的问题。
lilydjwg 写了:已经知道一点了:
当终端标题以中文结束时,会出现这种情况,系统调用如下:其中第一行是设置终端标题的,第二行不清楚。代码: 全选
write(1, "\33]2;\33$(AG?4s\33(Bhehe\33$(AVU6K\7", 28) = 28 write(1, "\33]1;\33$(AG?4s\33(Bhehe\33$(AVU6K\7", 28) = 28 write(1, "\33[38;61H\33[K\33[38;1H", 18) = 18 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 select(9, [0 6 8], NULL, [0 6], {0, 0}) = 0 (Timeout) write(1, "\33[?1l\33>", 7) = 7 write(1, "\33[?12l\33[?25h\33[?1049l", 20) = 20 exit_group(0) = ?
注意到直接将这串字符 echo 到终端时就会乱码,而如果以英文结束时就没有,因为在\33$(之后需要\33(B!
所以,解决办法是:将最后的那个\7(是选项 't_IE' 的值)前边加上\33(B就可以了。其中是Esc字符,是bell字符,ASCII分别为 27 和 7。代码: 全选
if !has("gui_running") set t_IE=(B endif
如果这样还是有乱码的话,可以试试同时改变 't_fs' (标题结束)的值。