最后更新于 .

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

tar zxvf vim-7.2.tar.bz2

注:后发现有误,tar zxvf  无法直接解压bz2,不过可以现在windows下用winrar或者7z解压。 进入vim72目录,执行(特别注意:所有的命令的操作用户,请保证是root权限,以免出现目录创建不了的错误

./configure --prefix=/usr/vim --enable-multibyte --with-features=huge
make && make install

对参数简单说明一下:

--enable-multibyte选项使vim可以支持使用多字节编码字符集的文件。
--with-features=huge 最大特性支持

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

alias vim="/usr/vim/bin/vim"

即可。 现在vim已经编译成支持多字节编码的版本,还需要在.vimrc中配置一下,参考如下文章: VIM解决中文编码问题 OK,现在vim已经支持多字节的文件啦,现在我们要让终端同时支持UTF-8编码或者gbk编码的文件,都不乱码~~听起来似乎不大可能?哈哈,那我们试试看~ 我这里是以XShell和putty来测试的,如果有朋友用secureCRT,可能需要自己测试一下。 其实设置很简单,即对两个终端的编码都设置成UTF-8,如图:

xshell putty

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

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

export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

今天在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

Pingbacks

  1. 无所不能的vim-vim到底能做什么 | 三月鸟社 on #

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

  2. 无所不能的vim-vim到底能做什么 | Vim中文网 on #

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

  3. 无所不能的vim——vim到底能做什么 | 农夫庄园 on #

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

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. 依云

    依云 on #

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

    Reply

    1. Dante

      Dante on #

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

      Reply

      1. 依云

        依云 on #

        不过我是没有用的。

        Reply

      2. 依云

        依云 on #

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

        Reply

        1. Dante

          Dante on #

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

          Reply

  2. nickyan

    nickyan on #

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

    Reply

    1. Dante

      Dante on #

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

      Reply

  3. tex

    tex on #

    用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

    Reply

    1. Dante

      Dante on #

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

      Reply

  4. suchasplus

    suchasplus on #

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

    Reply

    1. Dante

      Dante on #

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

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

      Reply

  5. James

    James on #

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

    Reply

    1. Dante

      Dante on #

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

      Reply

      1. James

        James on #

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

        Reply

        1. Dante

          Dante on #

          在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

          Reply

  6. Dante

    Dante on #

    今天在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

    Reply

    1. 午后奶茶

      午后奶茶 on #

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

      Reply

      1. Dante

        Dante on #

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

        Reply

    2. o(∩∩)o...哈哈

      o(∩∩)o...哈哈 on #

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

      Reply

  7. o(∩∩)o...哈哈

    o(∩∩)o...哈哈 on #

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

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

    Reply

    1. Dante

      Dante on #

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

      Reply

  8. Solrex

    Solrex on #

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

    Reply

    1. Dante

      Dante on #

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

      Reply

  9. sed2x

    sed2x on #

    [?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 也可

    Reply

发表评论