linux下vim的编译以及终端乱码的最终解决方案
公司开发机Linux上的Vim一直不支持多字节支持(:set fenc ,用这个命令就可以知道是否支持),导致在终端下的vim对中文的显示总是有问题(而且对于汉字,要按两次键才能移动过一个汉字)。
所以从新编译了一下,简单把编译的过程写在这里:
从www.vim.org上下载vim-7.2.tar.bz2
执行
1 | tar zxvf vim-7.2.tar.bz2 |
注:后发现有误,tar zxvf 无法直接解压bz2,不过可以现在windows下用winrar或者7z解压。
进入vim72目录,执行(特别注意:所有的命令的操作用户,请保证是root权限,以免出现目录创建不了的错误)
1 2 | ./configure --prefix=/usr/vim --enable-multibyte --with-features=huge make && make install |
对参数简单说明一下:
1 2 | --enable-multibyte选项使vim可以支持使用多字节编码字符集的文件。 --with-features=huge 最大特性支持 |
这样vim就安装上啦,如果公司上有多个vim,而自己想用自己安装的版本的话,可以在.profile中写入:
1 | alias vim="/usr/vim/bin/vim" |
即可。
现在vim已经编译成支持多字节编码的版本,还需要在.vimrc中配置一下,参考如下文章:
VIM解决中文编码问题
OK,现在vim已经支持多字节的文件啦,现在我们要让终端同时支持UTF-8编码或者gbk编码的文件,都不乱码~~听起来似乎不大可能?哈哈,那我们试试看~
我这里是以XShell和putty来测试的,如果有朋友用secureCRT,可能需要自己测试一下。
其实设置很简单,即对两个终端的编码都设置成UTF-8,如图:
下面这张图就是设置之后的效果图,可以看出两种编码是可以同时支持中文显示啦。
好啦,赶紧试试吧~~~
PS:如果还是有乱码的话,将下面这两句放到 .profile中,并且执行source .profile,不过我是没有用到这个配置的。
1 2 | export LANG="zh_CN.UTF-8" export LC_ALL="zh_CN.UTF-8" |
今天在Linux下编译了一下新版Vim7.3,执行:
1 | ./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 即可。
1 | apt-get install ncurses-dev |
原创文章,版权所有。转载请注明:转载自Vimer的程序世界 [ http://www.vimer.cn ]
本文链接地址: http://www.vimer.cn/?p=997



这个跨平台 ssh 乱码很容易解决啊。因为 Linux 一般默认使用 UTF-8,所以把 ssh 客户端设成 UTF-8 的就好了。
你的最后一句,我都看出了三种解释了。。。。
[回复]
Dante 回复:
三月 25th, 2010 at 7:32 下午
主要是公司开发机默认的vim是不支持多字节的,所以一直很纠结……
今天终于狠下心给重装了,呃,最后那两句,据说是如果linux的终端编码不是utf-8的话,也会有影响~
[回复]
依云 回复:
三月 26th, 2010 at 12:06 下午
不过我是没有用的。
[回复]
依云 回复:
三月 26th, 2010 at 12:08 下午
囧,不知怎么回事,还没写完就发出去了。。
我是说“不过我是没有用的”这句有歧义呢。
[回复]
Dante 回复:
三月 26th, 2010 at 2:09 下午
呃,明白了,刚读了一下,确实会有歧义……,我改下去……
[回复]
set fencs=gbk,utf8
set tenc=gbk
set enc=utf8
我一般在.vimrc里加这几句。凑合使用。
[回复]
Dante 回复:
三月 26th, 2010 at 9:12 上午
嗯,vimrc里面是一定要有这些东西的,我在文章里没写~~
set fencs=gbk,utf8
改成
set fencs=gbk,ucs-bom,utf-8
这样就可以先检查gbk,然后检查有bom头的utf-8,然后是没有bom头的utf-8
[回复]
用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 回复:
三月 26th, 2010 at 9:13 上午
哦哦,当时因为急着用,所以就没有仔细研究每个编译选项的意义啦,等以后再重新编译一下~~~
[回复]
恩,好吧….如果export了LANG=’zh_CN.UTF-8′的话,screen里面就没法正常的显示GBK了,如果设定成gbk的话,缺陷就更明显了。回头试试luit
[回复]
Dante 回复:
三月 28th, 2010 at 4:38 下午
呃,是说vim中吗?如果是vim的话,是需要在vimrc中加入如下的配置的:
set encoding=utf-8
set fenc=cp936
set fileencodings=cp936,ucs-bom,utf-8
如果是说终端里那些目录,文件的中文名之类,我就不太清楚了……
[回复]
我在vimrc里面加了
set fileencodings=gbk,ucs-bom,utf-8,cp936
但还是乱码,可知道为何?
[回复]
Dante 回复:
七月 23rd, 2010 at 10:12 下午
你的终端有设置过不?
还有vim的版本是多少呢?有没有多语言支持?
[回复]
James 回复:
七月 25th, 2010 at 11:06 上午
vim是7.2.330
应该有多语言支持吧?不太清楚,便utf-8的文件没问题.
终端设置什么?在gvim上也是一样.
[回复]
Dante 回复:
七月 26th, 2010 at 11:03 下午
在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
[回复]
今天在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
[回复]
午后奶茶 回复:
十月 1st, 2010 at 1:10 下午
编译出来没图标,不爽啊。。。
[回复]
Dante 回复:
十月 1st, 2010 at 4:41 下午
呃。。。我是在纯命令行下,有没有图标都无所谓的。。。
[回复]
o(∩∩)o...哈哈 回复:
十一月 15th, 2010 at 9:33 下午
我昨天编译的时候也遇到了和你一样的情况。解决的方法类似
[回复]
一谷歌vim linux 编译就进入了你的博客了。。。现在重新编译下vim 嘿嘿。。。
貌似ubuntu下不能直接ctrl+enter,快捷键发表评论哈
[回复]
Dante 回复:
十一月 15th, 2010 at 9:51 下午
哈,我试试~~~
呃。。。貌似没这个快捷键。。。可能留言插件没设置。。。
[回复]
[...] 3.完美支持中文,并支持多种文件编码很多编辑器会有处理多字节编码的问题,而vim完美解决了这一点。(如果你的vim没解决,请参考linux下vim的编译以及终端乱码的最终解决方案) [...]
弱弱地说一句,解压 tar.bz2 的命令是 tar xjvf
[回复]
Dante 回复:
三月 11th, 2011 at 12:54 下午
哦,这样啊,多谢提醒~~~
[回复]
[...] 很多编辑器会有处理多字节编码的问题,而vim完美解决了这一点。(如果你的vim没解决,请参考linux下vim的编译以及终端乱码的最终解决方案) [...]