`

vim coding

阅读更多

Vim和所有的流行文本编辑器一 样,可以很好的编辑各种字符编码的文件,这当然包括 UCS-2、UTF-8 等流行的 Unicode 编码方式。而且和很多来自 Linux 世界的软件一样,这需要你自己动手设置。

Vim 有四个跟字符编码方式有关的选项,encoding 、fileencoding 、fileencodings 、termencoding (这些选项可能的取值请参考 Vim 在线帮助 :help encoding-names),它们的意义如下:

1、 encoding : Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在 .vimrc 中改变它的值才有意义。

2、 fileencoding : Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
3、 fileencodings : Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
4、 termencoding : Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。

好了,解释完了这一堆容易让新手犯糊涂的参数,我们来看看 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 的代码页)。

以下是我的 .vimrc(见附件) 中关于字符编码方式设置的内容,这个设置比较有弹性,可以根据系统中的环境变量 $LANG (当然,Windows 中的写法是 %LANG%) 的值来自动设置合适的字符编码方式。此时,推荐设置 %LANG% = zh_CN.UTF-8。

注1: 事实上,Vim 的探测准确度并不高,尤其是在 encoding 没有设置为 utf-8 时。因此强烈建议将 encoding 设置为 utf-8,虽然如果你想 Vim 显示中文菜单和提示消息的话这样会带来另一个小问题。

当然,具体的操作是更改/etc/vim/vimrc文件,在里面添加两行:

set encoding=utf-8

set fileencodings=utf-8,chinese,latin-1

原文:http://blog.163.com/result_2205/blog/static/139819450201023132151824/
分享到:
评论

相关推荐

    zencoding-vim

    "zencoding-vim" 是一个专为Vim编辑器设计的插件,它引入了Zen Coding的概念,大大提升了前端开发者的工作效率。Zen Coding,后来更名为Emmet,是前端开发领域中一个快速编写HTML和CSS的工具。这个插件将Emmet的功能...

    zencoding-vim-master.zip

    标题中的"zencoding-vim-master.zip"是一个与Vim编辑器相关的压缩文件,它包含了一个名为"zencoding-vim-master"的项目或插件。Zencoding(也称为Zen Coding)是一种快速编写HTML和CSS的生产力工具,它允许用户通过...

    Zen Coding.vim

    Zen Coding: 一种快速编写HTML/CSS代码的方法 输入 div#i$-test.class$$$*5 …然后调用”展开缩写”行为 会被转换成为: <div id="i1-test" class="class111"></div> <div id="i2-test" class="class222"></div> ...

    vim最强整合版

    Vim优化各种常用插件的组合安装,调整了字体和背景,加上很好看的语法着色,已经可以成为完整ide环境,对插件的冲突也做了优化,自动补全可使用空格选词,snipmate默认使用Tab,安装zencoding,使用ctrl-e展开,自动匹配符号,...

    我使用的Vim.zip

    在“我使用的Vim.zip”这个压缩包中,包含了四个对Vim功能扩展至关重要的插件:matchit、zencoding、ctags和taglist。下面将分别详细介绍这些插件的功能和使用方法。 1. **matchit**: matchit是Vim的一个小插件,...

    vim自动生成文件模板 templates 设置方法

    /usr/bin/env python`,`# -*- coding: utf-8 -*-`等注释,以及函数定义、类声明等。记得留出占位符,如`{{{content}}}`,方便用户在实际使用时填写自己的代码。 3. **配置Vim**: 打开`~/.vimrc`(Vim的配置文件...

    vim常用插件及vimrc

    Vim是一款强大的文本编辑器,深受程序员和系统管理员的喜爱。其灵活性和高度可定制性使得用户可以根据个人喜好和工作需求调整其功能。本资源提供的"vim常用插件及vimrc"正是为了帮助用户优化Vim的...祝你happy coding!

    vim_plugin.zip

    vim_plugin: neocomplcache-7.0.zip nerdtree.zip php-doc.vim vim.png Vim基础命令表.doc ZenCodingCheatSheet.pdf zencoding-vim.zip

    vim中Emmet插件

    Emmet,原名Zen Coding,是一种快速、高效的Web开发编辑工具,尤其在编写HTML和CSS时,通过简短的缩写,可以自动生成复杂的代码结构。 首先,让我们了解一下Emmet的基本概念。Emmet的核心在于其强大的缩写系统。...

    vim 配置文件 vimrc 较适用于php开发

    Bundle 'mattn/zencoding-vim' Bundle 'Lokaltog/vim-powerline' Bundle 'Shougo/neocomplcache' Bundle 'Shougo/vimproc' "Bundle 'Shougo/neosnippet' Bundle 'Shougo/vimshell' Bundle 'scrooloose/...

    cpp_coding_macro.vim

    一些doxygen风格的C++注释脚本。包括文件注释、类注释、函数注释等

    practical vim

    it runs on almost every system imaginable and supports most coding and markup languages., Learn how to edit text the “Vim way”: complete a series of repetitive changes with The Dot Formula, using ...

    eclipse colortheme plug and zencoding plugin

    ZenCoding是一款强大的前端开发辅助工具,现在被称为Emmet。它极大地提升了HTML和CSS编写的速度。Emmet支持快速输入缩写,然后自动扩展成完整的HTML或CSS代码。例如,输入"div>ul>li*5",按Tab键后,Emmet会将其扩展...

    emmet-vim插件

    Emmet,原名Zen Coding,是由Dmitry芭蕾舞鞋创造的,现已成为前端开发者不可或缺的生产力提升神器。Emmet-Vim将这个功能集成了到Vim中,使得在Vim内也能享受到类似IDE级别的代码补全和自动提示体验。 首先,Emmet的...

    zencoding使用手册

    本文档将详细介绍如何在Vim环境下使用zencoding插件,帮助用户更高效地编写HTML代码。 #### 二、安装与配置 1. **安装**:首先确保您的编辑器或IDE支持zencoding,并按照官方文档完成插件的安装。 2. **配置**:...

    Practical Vim: Edit Text at the Speed of Thought

    it runs on almost every system imaginable and supports most coding and markup languages. Learn how to edit text the "Vim way:" complete a series of repetitive changes with The Dot Formula, using one...

    Vim入门到精通 适合0基础学习

    "Vim入门到精通" Vim是历史悠久的文本编辑器,可以追溯到qed。Bram Moolenaar于1991年发布初始版本。Linux、Mac用户,可以使用包管理器安装Vim,对于Windows用户,可以从我的网盘下载。该版本可轻易添加python、...

    learn-vim:vim基本学习

    Vim 基本功(Learn Vim)本仓库内容Vim基本功学习笔记GitBook:GitHub:GitPage:Something I hope you know before go into the coding~First, please watch or star this repo, I'll be more happy if you follow me....

    vim 7.4 + emmet 完全配置

    5. **Zen Coding**: 一种编辑模式,提供全屏无干扰的编写体验。 6. **选择和重命名**: 快速选择并修改多个相同标签或属性。 **Vim 7.4 配置Emmet的步骤** 1. **安装插件管理器**: 如Vundle或Pathogen,它们可以帮助...

    paul-felz-shell-coding-screen-vim:Shell脚本,用于使用screen和vim启动编码环境。 4个屏幕窗口

    4个屏幕窗口: 0.)在文件系统中浏览1.)Bin文件夹来构建/解释2.)主要在vim 3.)vim vsplit中的lib文件脚步: 1.)将您喜欢的vim颜色放入.vim / colors 在“ bash-coding.sh”中2.)设置您的VIMCOLOR ='your-color...

Global site tag (gtag.js) - Google Analytics