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
分享到:
相关推荐
### vim中文乱码解决方案 #### 一、问题背景与概述 在使用Vim编辑器时,中文乱码问题是一个常见的现象,特别是在Fedora和Ubuntu等Linux发行版中更为突出。本文将详细介绍如何解决Vim中的中文乱码问题,并提供一些...
8. **阅读 `grep.vim乱码问题.txt`**:文件名暗示了可能的解决方案。这个文本文件可能包含了解决问题的具体步骤或调整建议。 通过以上方法,你应该能有效地解决 grep.vim 使用过程中遇到的乱码问题。记住,理解和...
通过以上步骤,你应该能够解决在Linux下使用Vim编辑中文文本时出现的乱码问题。保持Vim的编码设置与你的系统和文件编码相匹配是避免乱码的关键。如果遇到特殊情况,比如需要与其他软件兼容,可以根据需要调整文件的...
Vim是一款强大的文本编辑器,尤其受...总之,解决Vim在Windows 8上的中文乱码问题主要涉及配置正确的编码设置、安装相关的插件以及确保终端环境的支持。通过这些方法,你可以愉快地在Vim中处理中文文本,提高工作效率。
解决ubuntu中vim显示中文乱码的问题
Linux Vim 显示 UTF-8 文档乱码的解决方法 在 Linux 系统中,Vim 是一种常用的文本编辑器,但是在使用 Vim 的时候,经常会遇到 UTF-8 文档乱码的问题。为了解决这个问题,我们需要了解 Vim 中的四个与编码有关的...
Ubuntu 11.04 下 Gedit 和 vim 中文乱码问题解决方案 在 Ubuntu 11.04 操作系统中,使用 Gedit 和 vim 编辑器时,经常会遇到中文乱码问题。这种问题的出现是由于编辑器不能正确地识别和处理中文字符编码所致。解决...
Ubuntu 11.10 MySQL 客户端 Emma 6.0 中文乱码解决办法 在 Ubuntu 11.10 中使用 MySQL 客户端 Emma 6.0 时,可能会遇到中文乱码的问题。解决这个问题需要修改 Emma 的配置文件或源代码,以便支持中文显示。 首先,...
本篇文章将详细解析如何解决Vim在Windows下的乱码问题。 首先,我们要理解Vim的编码设置。Vim有三个与字符编码相关的设置:`encoding`、`fileencodings`和`fileencoding`。`encoding`定义了Vim内部使用的字符编码,...
本文将详细阐述如何解决Ubuntu环境下使用编辑器(如vim、gedit等)打开来自Windows系统的文本文件时出现的中文乱码问题。 #### 一、理解中文乱码的原因 中文乱码通常是因为文件编码格式不一致导致的。不同的操作...
"Vim、gvim在Windows下中文乱码的终极解决方案" Vim是一款功能强大且广泛使用的文本编辑器,但是在Windows平台下,却常常出现中文乱码的问题。这些问题包括文件显示乱码、菜单乱码、右键菜单乱码、console输出乱码...
### Linux乱码问题解决方案 #### 一、理解乱码产生的原因 在Linux环境中,乱码问题通常是由于不同操作系统之间的字符编码差异所导致的。Windows系统默认采用GBK编码(早期使用GB2312),而Linux则普遍使用UTF-8编码...
在 `learnvimscriptthehardway-cn-master` 文件夹中,你可能会找到这本书的源代码、练习文件和解决方案,这将是你实践和提高 Vim Script 技能的理想资源。跟着教程一步步来,每次理解和应用新的概念,你会逐渐成为 ...
### Windows快捷键与Vim快捷键冲突解决 #### 背景介绍 在日常工作中,很多程序员和文本编辑爱好者都喜欢使用Vim这款高效且功能强大的文本编辑器。然而,在不同的操作系统下,Vim的默认快捷键可能会与系统自带的...
在本文中,我们将深入探讨如何配置Vim,特别是关于字符编码的设置,以确保在处理不同编码的文件时避免乱码问题。 首先,我们要关注`encoding`设置。`encoding`决定了Vim内部使用的字符编码方式,包括缓冲区、菜单...
### Linux系统乱码问题解决方案 #### 一、背景与概述 在使用Linux系统的过程中,用户可能会遇到字符显示异常的问题,即通常所说的“乱码”。乱码现象不仅影响用户体验,还可能导致数据解读错误。本文旨在整理关于...
vim自动提示等多种功能 先安装ctags 然后进入./vim文件中执行 sh vim_config_ctags-v2.0.sh 再进入./vimconfig中执行 解压缩压缩报 tar jxvf vimconfig.tar.bz2 ... 解决办法 sudo yum install glibc.i686