set encoding=utf8
Vim 可以很好的编辑各种字符编码的文件,包括 UCS-2、UTF-8 等流行的 Unicode 编码方式:
Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding,它们的意义如下:
* encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等;
* fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此);
* fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面;
* termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。
Vim 的多字符编码的工作方式:
1. Vim 启动,根据 .vimrc 中设置的 encoding 的值来设置 buffer、菜单文本、消息文的字符编码方式;
2. 读取需要编辑的文件,根据 fileencodings 中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到的,看起来是正确的 (注1) 字符编码方式;
3. 对比 fileencoding 和 encoding 的值,若不同则调用 iconv 将文件内容转换为 encoding 所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer 里,此时我们就可以开始编辑这个文件了。注意,完成这一步动作需要调用外部的 iconv.dll (注2),你需要保证这个文件存在于 $VIMRUNTIME 或者其他列在 PATH 环境变量中的目录里;
4. 编辑完成后保存文件时,再次对比 fileencoding 和 encoding 的值。若不同,再次调用 iconv 将即将保存的 buffer 中的文本转换为 fileencoding 所描述的字符编码方式,并保存到指定的文件中。同样,这需要调用 iconv.dll。
由于 Unicode 能够包含几乎所有的语言的字符,而且 Unicode 的 UTF-8 编码方式又是非常具有性价比的编码方式 (空间消耗比 UCS-2 小),因此建议 encoding 的值设置为 utf-8。这么做的另一个理由是 encoding 设置为 utf-8 时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的 ;)。我们在中文 Windows 里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为 GB2312/GBK 比较合适,因此 fileencoding 建议设置为 chinese (chinese 是个别名,在 Unix 里表示 gb2312,在 Windows 里表示 cp936,也就是 GBK 的代码页)。
注1: 事实上,Vim 的探测准确度并不高,尤其是在 encoding 没有设置为 utf-8 时。因此强烈建议将 encoding 设置为 utf-8,虽然如果你想 Vim 显示中文菜单和提示消息的话这样会带来另一个小问题。
注2: 在 GNU 的 FTP 上可以下载到 iconv 的 Win32 版(http://mirrors.kernel.org/gnu/libiconv/libiconv-1.9.1.bin.woe32.zip)。
注3: 查看帮助 :h iconv-dynamic。
注4: 前方中提到的.vimrc在windows下为_vimrc,存在于vim安装目录下。
以下为在windows下gvim7.2地配置文件_vimrc,使用此配置可解决安装中文版vimdoc后出现的菜单、控制台信息等乱码现象。
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_CN.utf-8
分享到:
相关推荐
Linux Vim 显示 UTF-8 文档乱码的解决方法 在 Linux 系统中,Vim 是一种常用的文本编辑器,但是在使用 Vim 的时候,经常会遇到 UTF-8 文档乱码的问题。为了解决这个问题,我们需要了解 Vim 中的四个与编码有关的...
.VIM查看中文编码文件显示为乱码的解决办法.pdf
.VIM查看中文编码文件显示为乱码的解决办法.docx
.VIM查看中文编码文件显示为乱码的解决办法 (2).pdf
.VIM查看中文编码文件显示为乱码的解决办法 (2).docx
Ubuntu 11.10 MySQL 客户端 Emma 6.0 中文乱码解决办法 在 Ubuntu 11.10 中使用 MySQL 客户端 Emma 6.0 时,可能会遇到中文乱码的问题。解决这个问题需要修改 Emma 的配置文件或源代码,以便支持中文显示。 首先,...
### Linux乱码问题解决方案 #### 一、理解乱码产生的原因 在Linux环境中,乱码问题通常是由于不同操作系统之间的字符编码差异所导致的。Windows系统默认采用GBK编码(早期使用GB2312),而Linux则普遍使用UTF-8编码...
总之,遇到Linux下`ll`命令显示乱码的问题,调整`LANG`环境变量通常是有效的解决办法。通过确保系统和终端使用的字符编码一致,可以避免大多数乱码问题。同时,对字符编码的理解和管理能力也是Linux用户和开发者必备...
### PHP+MYSQL使用UTF8中文乱码终极解决办法 #### 背景介绍 在进行Web开发时,尤其是在处理中文内容时,经常会遇到一个让人头疼的问题——中文乱码。这通常发生在使用PHP与MySQL组合搭建的网站上。中文乱码不仅影响...
这些问题的出现会影响编辑效率和用户体验,因此需要找到合适的解决办法。 #### 二、解决方法 针对上述问题,可以通过修改系统配置文件来解决。具体的步骤如下: ##### 1. 修改 `/etc/vim/vimrc.tiny` - **操作...
解决办法是使用以下命令: ``` sudo apt-get install grub2 ``` 此外,在 Ubuntu 12.04 中可能会出现中文乱码问题,可以通过以下步骤解决: 1. 执行命令:`sudo su root` 2. 执行命令:`vim ~/.bashrc` 3. 编辑...
#### 1.13 Ubuntu卡死的解决办法 - **解决方案**: - 重启计算机。 - 尝试通过终端解决问题。 ### 2. Android开发工具 #### 2.1 代码编辑工具 - **slickedit**: 高级代码编辑器,支持多种编程语言。 - **eclipse*...