2009年2月14日星期六

vim中的modeline

vim中的modeline可以在你的文件中读入一些设置,如文件类型等。如,在b.bak中的开头写入:
/* vim: set ft=c: */
则用vim打开时,就自动识别为c语言文件。
要打开这个功能,在你的.vimrc中,要有
set modeline
 
modeline有两种格式:
   (1)第一种格式:
    [text]{white}{vi:|vim:|ex:}[white]{options}
  
    [text]          随便什么文本,或者空白。
    {white}         至少一个空格或tab。
    {vi:|vim:|ex:}  后面三个字符串之一,"vi:", "vim:" 或 "ex:"。
    [white]         可有也可无的空格。
    {options}       被set的选项列表,用冒号':'分隔。

举例:
// vi:noai:sw=3 ts=6
/* vim:tabstop=8:expandtabs:shiftwidth=8 */
          
    (2)第二种格式:
    [text]{white}{vi:|vim:|ex:}[white]set {options}:[text]

    [text]          随便什么本文,或者空白。
    {white}         至少一个空格或tab。
    {vi:|vim:|ex:}  后面三个字符串之一,"vi:", "vim:" or "ex:"。
    [white]         可有也可无的空格。
    set             字符串"set " (注意set后面的那个空格不可少)。
    {options}       选项列表,用空格分开。
    :               一个冒号。
    [text]          随便什么文本,或者空白。

举例:
/* vim: set ai tw=75: */
/* vim: set shiftwidth=4 autoindent : */
       
注意:
   vi:或vim:或ex:前面的那个空格不可少,这可以最大限度地避免误判。但,
   vi:和vim:可以直接放在行首,而ex:不行。
  
modeline还可以加入版本识别,所用数字为实际版本号乘以100。如
vim600:      版本大于等于6.0
vim<600:     版本小于6.0
vim=600:     版本等于6.0
vim>;600:     版本大于6.0
       
两种格式的区别:
   对于第一种格式,一旦识别,该行剩余部分都将被使用,因此,这样的写法
   /* vi:ts=4: */
   将因为后面的*/而出错。
   而采用第二种格式就没有这个问题了,因为它将显式地以一个冒号结束。
   /* vi:set ts=4: */
  
modeline写在哪儿?
   vim只会在一个文件的前modelines行和后modelines行中寻找modeline命令
   模式,modelines的默认值是5。
  
modeline的开关是什么?
   开:set modeline
   关:set nomodeline
   事实上,set modelines=0 的效果和set nomodeline是一样的。

没有评论: