vim退出乱码

Vim、Emacs配置和使用
soiamso
帖子: 418
注册时间: 2008-09-06 2:00

Re: vim退出乱码

#16

帖子 soiamso » 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就可以了。

代码: 全选

if !has("gui_running")
  set t_IE=(B
endif
其中是Esc字符,是bell字符,ASCII分别为 27 和 7。
如果这样还是有乱码的话,可以试试同时改变 't_fs' (标题结束)的值。
头像
i_NIX
帖子: 450
注册时间: 2008-02-11 15:46

Re: vim退出乱码

#17

帖子 i_NIX » 2010-03-03 13:16

最近又发现了一点,安装gvim-gnome后在终端运行vim退出时就会出现乱码,而未安装前不会有问题。
所以我在14楼的方法可以避免使用vim.gnome,来避免退出乱码。
Google Talk群组,请来<雨云>一番!
主题:UbuntuLinux编程科幻、民主、科学等。
添加 rain-cloud@appspot.com 为好友(然后say hi,并等待验证)
参见 http://goo.gl/xIpxH

Twitter:http://twitter.com/nixzhu
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

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

#18

帖子 Fermat618 » 2012-05-04 11:40

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 字符都显示为方框
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
回复