取消vim在编辑xml文档时的自动缩进功能
使用XXE作为DocBook图形化编辑器我相信很多人也和我一样,在编辑 xml 文档时,本来那一堆 <xxx> ... </xxx> 标记就够让我心烦意乱的了,就更不要说去忍受又臭又长的一串带有缩进的嵌套标记了。所以,我不需要 vim 为 xml 所提供的自动缩进功能。
我们在使用 vim 时,在其配置文件 .vimrc 中,通常有以下设置:
这一设置实际上是以下三条设置语句的合成:
filetype plugin on
filetype indent on
它们的作用分别描述如下:
- 打开文件类型检测功能;
- 允许VIM加载文件类型插件;
- 允许VIM为不同类型的文件定义不同的缩进格式。
对于这几项设置语句更为详细的解释请参考 Easwy 所写的 “使用VIM开发项目”系列文章的 第8篇:开启文档类型检测。
本文的主要目的是如何取消 vim 为 xml 文档所赋予的自动缩进功能,而且是在不触动其他文档自动缩进功能的前提下来实现。所以我们只关心 vim 是怎样为不同类型文档提供自动缩进功能的。
如果仔细阅读上文所提到的 Easwy 所写的文章,就会明白 vim 是在 runtimepath 目录的 indent 子目录下找到相应文件类型的自动缩进脚本的。这里所谓的 runtimepath是 vim 默认的一些自动搜索脚本的目录,在 vim 的 normal 模式下输入 :set runtimepath? 可以查看具体的目录。
对于 Linux 系统,vim 自带的一些文件类型的自动缩进脚本文件通常位于 /usr/share/vim/vimcurrent/indent 目录下,若进入该目录,应该可以发现有一个名曰 xml.vim 的文件,只需将这个文件的名字改一下,就可以让 vim 失去对 xml 代码自动缩进的能力了。那么我们就将该文件改成 xml-masked-by-yourname.vim。如果日后心血来潮,需要让 vim 支持 xml 代码自动缩进,可以再把名字改回来。
可能你为了更好的编辑 xml 文档,所以你安装了 xml.vim 插件(见我的另一篇日志)。这样,即使你按照前文那样取消了 vim 对 xml 文档类型的自动缩进支持,但是在使用 xml.vim 提供的自动换行+闭合功能时,依然会自动产生缩进的。我为此郁闷了一个上午,但最后还是找到了解决方法,于是就将取消 xml 缩进进行到底。
方法很简单,打开你所安装的 xml.vim 文件(通常你是将它安装在 $HOME/.vim/ftplugin 目录下的),找到这样一行:
先将这行代码注释掉,以便于将来恢复。然后在该行代码下面再添加以下代码:
实际上,我所做的 hack 只是将原代码中的缩进符号 >> 给去掉了。
现在终于可以舒服地使用 vim 来写 docbook 文档了。

2008年2月15日 00:39 这样 tag;; 这种方式,还是缩进了。
2008年2月15日 00:47 搞定! 把 L590的 exe 'normal! o<^[pa>^[Ox^[>>$x' 的>>去掉 改为exe 'normal! o<^[pa>^[Ox^[>>$x'