分页: 2 / 2

Re: vim退出乱码

发表于 : 2009-12-02 15:51
soiamso
有可能是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就可以了。

代码: 全选

if !has("gui_running")
  set t_IE=(B
endif
其中是Esc字符,是bell字符,ASCII分别为 27 和 7。
如果这样还是有乱码的话,可以试试同时改变 't_fs' (标题结束)的值。

Re: vim退出乱码

发表于 : 2010-03-03 13:16
i_NIX
最近又发现了一点,安装gvim-gnome后在终端运行vim退出时就会出现乱码,而未安装前不会有问题。
所以我在14楼的方法可以避免使用vim.gnome,来避免退出乱码。

Re: 有点明白了——vim退出乱码

发表于 : 2012-05-04 11:40
Fermat618
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就可以了。

代码: 全选

if !has("gui_running")
  set t_IE=(B
endif
其中是Esc字符,是bell字符,ASCII分别为 27 和 7。
如果这样还是有乱码的话,可以试试同时改变 't_fs' (标题结束)的值。
我这里 Esc 和 bell 字符都显示为方框