公司开发机Linux上的Vim一直不支持多字节支持(:set fenc ,用这个命令就可以知道是否支持),导致在终端下的vim对中文的显示总是有问题(而且对于汉字,要按两次键才能移动过一个汉字)。
所以从新编译了一下,简单把编译的过程写在这里:
www.vim.org上下载vim-7.2.tar.bz2
执行

注:后发现有误,tar zxvf  无法直接解压bz2,不过可以现在windows下用winrar或者7z解压。

进入vim72目录,执行(特别注意:所有的命令的操作用户,请保证是root权限,以免出现目录创建不了的错误

对参数简单说明一下:

这样vim就安装上啦,如果公司上有多个vim,而自己想用自己安装的版本的话,可以在.profile中写入:

即可。

现在vim已经编译成支持多字节编码的版本,还需要在.vimrc中配置一下,参考如下文章:
VIM解决中文编码问题

OK,现在vim已经支持多字节的文件啦,现在我们要让终端同时支持UTF-8编码或者gbk编码的文件,都不乱码~~听起来似乎不大可能?哈哈,那我们试试看~

我这里是以XShell和putty来测试的,如果有朋友用secureCRT,可能需要自己测试一下。
其实设置很简单,即对两个终端的编码都设置成UTF-8,如图:

xshell

putty

下面是效果图,可以看出同时支持了utf8和cp936两种编码的展示:

好啦,赶紧试试吧~~~

PS:如果还是有乱码的话,将下面这两句放到 .profile中,并且执行source .profile,不过我是没有用到这个配置的。


今天在Linux下编译了一下新版Vim7.3,执行:

的时候,可能会报:

这个时候安装一下 ncurses-dev 即可。

强烈推荐–将GUI配色转化为终端配色的VIM插件–gui2term.py

前几天,依云兄在我博客上推荐了一款插件gui2term.py,用了之后立马叫好,苦于一直没有时间,所以今天特意推荐一下。 这款插件实现了将gvim的配色转化成终端...

阅读全文

让vim在终端下的配色亮起来!

各位在终端下用vim的朋友们~~我想我绝对给大家带来了一个福音~~哈哈 想必每个人都受不了终端下vim那阴暗、简陋的配色吧,而且就算用 :color xxx 来选择那些支...

阅读全文

vim终端下中文乱码问题

远程登录服务器用vim在终端下编辑查看文件经常会遇见各种中文乱码问题。 做如下设置可基本解决vim中文乱码问题 首先查看系统对中文的支持 locale -a | grep z...

阅读全文

27则回应给“linux下vim的编译以及终端乱码的最终解决方案”

  1. 依云说道:

    这个跨平台 ssh 乱码很容易解决啊。因为 Linux 一般默认使用 UTF-8,所以把 ssh 客户端设成 UTF-8 的就好了。
    你的最后一句,我都看出了三种解释了。。。。

    [回复]

    Dante 回复:

    主要是公司开发机默认的vim是不支持多字节的,所以一直很纠结……
    今天终于狠下心给重装了,呃,最后那两句,据说是如果linux的终端编码不是utf-8的话,也会有影响~

    [回复]

    依云 回复:

    不过我是没有用的。

    [回复]

    依云 回复:

    囧,不知怎么回事,还没写完就发出去了。。
    我是说“不过我是没有用的”这句有歧义呢。

    [回复]

    Dante 回复:

    呃,明白了,刚读了一下,确实会有歧义……,我改下去……

    [回复]

  2. nickyan说道:

    set fencs=gbk,utf8
    set tenc=gbk
    set enc=utf8
    我一般在.vimrc里加这几句。凑合使用。

    [回复]

    Dante 回复:

    嗯,vimrc里面是一定要有这些东西的,我在文章里没写~~
    set fencs=gbk,utf8
    改成
    set fencs=gbk,ucs-bom,utf-8
    这样就可以先检查gbk,然后检查有bom头的utf-8,然后是没有bom头的utf-8

    [回复]

  3. tex说道:

    用HUGE也许不太必要. HUGE和BIG的主要区别是增加了调试用的profiling. Multibyte支持(FEAT_MBYTE)在BIG里就有了. 我在Win32/MinGW下编译时在Make_ming.mak里增加中文字体支持用的是

    +DEFINES += -DFEAT_PROPORTIONAL_FONTS

    当然还在feature.h的尾巴上关掉了一些BIG里我不需要的东西, 象韩文/波斯文之类的:

    #undef FEAT_ARABIC
    #undef FEAT_CSCOPE
    #undef FEAT_FKMAP
    #undef FEAT_RIGHTLEFT
    #undef FEAT_HANGULIN
    #undef FEAT_KEYMAP
    #undef FEAT_LANGMAP

    [回复]

    Dante 回复:

    哦哦,当时因为急着用,所以就没有仔细研究每个编译选项的意义啦,等以后再重新编译一下~~~

    [回复]

  4. suchasplus说道:

    恩,好吧….如果export了LANG=’zh_CN.UTF-8′的话,screen里面就没法正常的显示GBK了,如果设定成gbk的话,缺陷就更明显了。回头试试luit

    [回复]

    Dante 回复:

    呃,是说vim中吗?如果是vim的话,是需要在vimrc中加入如下的配置的:
    set encoding=utf-8
    set fenc=cp936
    set fileencodings=cp936,ucs-bom,utf-8

    如果是说终端里那些目录,文件的中文名之类,我就不太清楚了……

    [回复]

  5. James说道:

    我在vimrc里面加了
    set fileencodings=gbk,ucs-bom,utf-8,cp936
    但还是乱码,可知道为何?

    [回复]

    Dante 回复:

    你的终端有设置过不?
    还有vim的版本是多少呢?有没有多语言支持?

    [回复]

    James 回复:

    vim是7.2.330
    应该有多语言支持吧?不太清楚,便utf-8的文件没问题.
    终端设置什么?在gvim上也是一样.

    [回复]

    Dante 回复:

    在vim里面输入命令:version
    可以看到是否加入了多语言支持。
    http://www.vimer.cn/2010/03/linux%e4%b8%8bvim%e7%9a%84%e7%bc%96%e8%af%91%e4%bb%a5%e5%8f%8a%e7%bb%88%e7%ab%af%e4%b9%b1%e7%a0%81%e7%9a%84%e6%9c%80%e7%bb%88%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88.html
    如果不是的话,可以看一下这篇文章,里面说了如何编译多语言支持的vim

    [回复]

  6. Dante说道:

    今天在Linux下编译了一下新版Vim7.3,执行:
    ./configure –prefix=/usr/vim –enable-multibyte –enable-pythoninterp –with-features=huge
    的时候,可能会报:
    no terminal library found
    checking for tgetent()… configure: error: NOT FOUND!
    You need to install a terminal library; for example ncurses.
    Or specify the name of the library with –with-tlib.

    这个时候安装一下 ncurses-dev 即可。
    apt-get install ncurses-dev

    [回复]

    午后奶茶 回复:

    编译出来没图标,不爽啊。。。

    [回复]

    Dante 回复:

    呃。。。我是在纯命令行下,有没有图标都无所谓的。。。

    [回复]

    o(∩∩)o...哈哈 回复:

    我昨天编译的时候也遇到了和你一样的情况。解决的方法类似

    [回复]

  7. o(∩∩)o...哈哈说道:

    一谷歌vim linux 编译就进入了你的博客了。。。现在重新编译下vim 嘿嘿。。。

    貌似ubuntu下不能直接ctrl+enter,快捷键发表评论哈

    [回复]

    Dante 回复:

    哈,我试试~~~
    呃。。。貌似没这个快捷键。。。可能留言插件没设置。。。

    [回复]

  8. [...] 3.完美支持中文,并支持多种文件编码很多编辑器会有处理多字节编码的问题,而vim完美解决了这一点。(如果你的vim没解决,请参考linux下vim的编译以及终端乱码的最终解决方案) [...]

  9. Solrex说道:

    弱弱地说一句,解压 tar.bz2 的命令是 tar xjvf

    [回复]

    Dante 回复:

    哦,这样啊,多谢提醒~~~

    [回复]

  10. [...] 很多编辑器会有处理多字节编码的问题,而vim完美解决了这一点。(如果你的vim没解决,请参考linux下vim的编译以及终端乱码的最终解决方案) [...]

  11. […] 很多编辑器会有处理多字节编码的问题,而vim完美解决了这一点。(如果你的vim没解决,请参考linux下vim的编译以及终端乱码的最终解决方案) […]

  12. sed2x说道:

    [?1049h[999;999H[6n[1;1H[J[2;1H~[3;1H~[4;1H~[5;1H~[6;1H~[7;1H~[8;1H~[9;1H~[10;1H~[11;1H~[12;1H~行号连起来了,qiuzhu ? huifu EMAIL 也可

    [回复]

发表评论