`
wensuper
  • 浏览: 69444 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转]vim对文件的编解码—encoding,fileencoding,fileencodings

阅读更多
vim对于文件的编解码有三个参数,分别是encoding、fileencoding,fileencodings,下面说的应该可以解决绝大多数的问题了。

        1、支持中文编码的基础
        要更好地支持中文编码需要两个特性:+multi_byte和+iconv,可以用|:version|命令检查当前使用的Vim是否支持,否则的话需要重新编译。

        2、影响中文编码的设置项
        Vim中有几个选项会影响对多字节编码的支持:
        encoding(enc):encoding是Vim的内部使用编码,encoding的设置会影响Vim内部的Buffer、消息文字等。在Unix环境下,encoding的默认设置等于locale;Windows环境下会和当前代码页相同。在中文Windows环境下encoding的默认设置是cp936(GBK)。
        fileencodings(fencs):Vim在打开文件时会根据fileencodings选项来识别文件编码,fileencodings可以同时设置多个编码,Vim会根据设置的顺序来猜测所打开文件的编码。
        fileencoding(fenc):Vim在保存新建文件时会根据fileencoding的设置编码来保存。如果是打开已有文件,Vim会根据打开文件时所识别的编码来保存,除非在保存时重新设置fileencoding。
termencodings(tenc):在终端环境下使用Vim时,通过termencoding项来告诉Vim终端所使用的编码。
        termencodings(tenc):在终端环境下使用Vim时,通过termencoding项来告诉Vim终端所使用的编码。

        3、Vim中的编码转换
        Vim内部使用iconv库进行编码转换,如果这几个选项所设置的编码不一致,Vim就有可能会转换编码。打开已有文件时会从文件编码转换到encoding所设置的编码;保存文件时会从encoding设置的编码转换到fileencoding对应的编码。经常会看到Vim提示[已转换],这是表明Vim内部作了编码转换。终端环境下使用Vim,会从termencoding设置的编码转换到encoding设置的编码。
        可以用|:help encoding-values|列出Vim支持的所有编码。

        4、具体应用环境的设置
        只编辑GBK编码的文件
        set fileencodings=cp936
        set fileencoding=cp936
        set encoding=cp936

        只编辑UTF-8编码的中文文件
        set fileencodings=utf-8
        set fileencoding=utf-8
        set encoding=cp936 或者 set encoding=utf-8

        同时支持GBK和UTF-8编码
        set fileencodings=ucs-bom,utf-8,cp936
        set fileencoding=utf-8
        set encoding=cp936 或者 set encoding=utf-8

        如果在终端环境下使用Vim,需要设置termencoding和终端所使用的编码一致。例如:
        set termencoding=cp936 或者 set termencoding=utf-8

        Windows记事本编辑UTF-8编码文件时会在文件头上加上三个字节的BOM:EFBBBF。如果fileencodings中设置ucs-bom的目的就是为了能够兼容用记事本编辑的文件,不需要的话可以去掉。Vim在保存UTF-8编码的文件时会去掉BOM。去掉BOM的最大好处是在Unix下能够使用cat a b>c来正确合并文件,这点经常被忽略。

        5、FAQ
        为什么在Vim中一次只能删除半个汉字?
        因为encoding设置错误,把encoding设置为cp936就可以解决此问题。在Unix环境下Vim会根据locale来设置默认的encoding,如果没有正确设置locale并且没有设置encoding就会一次只能删除半个汉字。
        VIM为什么不能输入繁体字?
        把euc-cn或者GB2312改为cp936就可以了。euc-cn是GB2312的别名,不支持繁体汉字。cp936是GBK的别名,是GB2312的超集,可以支持繁体汉字。
        VIM为什么提示不能转换?
        因为在编译Vim时没有加入iconv选项,重新编译Vim才能解决。
        如何打开一个GBK编码的文件并另存为UTf-8编码?
        保存文件时运行命令|:set fileencoding=utf-8|就可以了。

        另可参考http://blog.163.com/sea_haitao/blog/static/7756216200942552859673/
分享到:
评论

相关推荐

    Linux 本编辑器vim显示utf-8文档乱码的解决方法.docx

    为了解决这个问题,我们需要了解 Vim 中的四个与编码有关的选项:fileencodings、fileencoding、encoding 和 termencoding。 encoding 是 Vim 内部使用的字符编码方式,它决定了 Vim 内部所有的 buffer、寄存器、...

    vim 配置文件 vim 配置文件 vim 配置文件

    vim配置文件 vimrc vim配置文件 vimrc vim配置文件 vimrc

    强大的vim配置文件(最新整理)

    这涉及到`fileencodings`和`encoding`设置,确保它们能识别并处理中文编码,如`utf-8`。 6. **编译与运行**:在Vim中,可以设置快捷键如F7来编译和运行代码。这通常需要编写自定义命令或者利用`map`命令映射到外部...

    vim配置文件,vim配置文件

    在Linux环境中,Vim配置文件通常位于用户的主目录下的`.vimrc`文件,这是一个初始化脚本,当Vim启动时会读取这个文件以设定各种选项和映射。以下是一些可能包含在`vim-config`中的关键知识点: 1. **颜色方案**:...

    vim配置文件目录

    Vim的配置文件通常位于`~/.vimrc`(Linux和macOS)或`%USERPROFILE%\_vimrc`(Windows)路径下,这个文件包含了启动Vim时执行的一系列命令和设置。通过自定义这个文件,你可以调整Vim的行为,使其更适合你的工作流。...

    vim配置文件

    - 例如,`:cs add`命令可以添加一个数据库,`:cs find s <symbol>`可以查找符号定义,`:cs find c <file>`可以查找调用了指定文件的地方。 3. **Vim配置文件(.vimrc)**: - `.vimrc`文件是Vim的启动配置,其中...

    解决linux下vim中文乱码的方法

    4. **探测文件编码**: 如果Vim不能正确识别文件编码,可以尝试调整`fileencodings`列表的顺序,确保UTF-8排在首位。这样Vim会首先尝试用UTF-8解码文件。 5. **编辑和保存**: 编辑完成后,Vim会根据`fileencoding`和...

    vim 配置 vim 配置

    如果打开的是已有文件,Vim会根据`fileencodings`的探测结果自动设置`fileencoding`。在Windows环境下,为了兼容性,我们可能需要将`fileencoding`设置为`chinese`(GBK),而在非Windows系统中,保持`utf-8`是个好...

    Linux下查看文件编码,文件编码格式转换和文件名编码.doc

    其中,encoding 指的是 Vim 内部使用的字符编码方式,fileencoding 指的是当前编辑的文件的字符编码方式,fileencodings 是 Vim 自动探测 fileencoding 的顺序列表,termencoding 指的是终端的字符编码方式。...

    vim配置文件.rar

    1. **基本设置**:例如,设置编码格式(`set encoding=utf-8`),使Vim在打开文件时默认使用UTF-8编码,避免乱码问题。 2. **操作行为**:你可以改变Vim的默认行为,如开启自动缩进(`set autoindent`)、智能缩进...

    vim编辑器配置文件.vimrc

    该配置文件包含了设置行号、Tab...具体说明可以参考我的文章《【Linux成长之路基础篇:玩转vim(vi)编辑器】三大模式及命令介绍、如何通过配置文件.vimrc配置vim》第三章《三、vim配置文件.vimrc》里面有详细的介绍。

    vim资源文件

    vim的资源文件,解压后,将其中的.vim文件夹放入到你的/Home目录下,里面一般的vim插件都有了,如还想要其他的可以下载对应的vim插件,放入.vim/plugin文件夹下面,doc文件放入.vim/doc文件夹下面 vim的效果 ...

    vim常用配置文件下载

    我自己的vim配置文件,包括常用的代码不全,git提示,nerdtree,taglist等。 复制到根目录下重命名为.vimrc

    vim的配置文件设置

    7. **文件编码**:`fileencoding=utf-8`确保Vim以UTF-8编码保存和读取文件。 8. **显示行号**:`set number`显示行号,而`set nonumber`则关闭显示。 9. **备份与交换文件**:`set backup`启用自动备份,`set swap...

    vim 配置文件

    强大的vim配置文件,可同时适用于linux和windows下的vim配置。 涵盖了所有主流插件的配置,常见的显示设置,编译命令的映射。 插件: ctags 代码跟踪 taglist 类视图 winmanager 文件视图 minibuffer 显示多文件...

    Vim 7.3安装文件及配置文件

    3. **设置文件编码**:`fileencoding=utf-8` 指定Vim打开文件时使用的编码,这对于处理不同语言的文本尤其重要。 4. **开启自动换行**:`set wrap` 让长行在屏幕边缘折行,而`set nowrap`则禁用此功能。 5. **映射...

    vim的c.vim和cpp.vim文件

    通过替换默认的文件,你可以定制Vim对这些语言的语法高亮,使得代码更加易读,提升编程体验。 高亮显示函数名称在编程时极其重要,因为函数是代码逻辑的核心部分。当函数名被突出显示时,可以更容易地追踪调用链,...

    .vimrc vim配置文件

    .vimrc 文件 vim配置文件 字体、颜色 各类插件 ------------ 具体配置步骤找寻相关博客 仅供参考

Global site tag (gtag.js) - Google Analytics