puppet的语言 还没有被vim支持,编辑时候黑底白字,不容易排错,看起来也不好分辨,请一定要看我一下这篇高亮显示的文章^.^

原理就是在你用户根目录下的.vim里面加2个文件,具体如下:

1 切换到个人vim目录:

#cd ~/.vim

#vi syntax/puppet.vim

添加以下内容:

" puppet syntax file
"
Filename:     puppet.vim
" Language:     puppet configuration file
"
Maintainer:   Dongwm<ciici1234@hotmail.com>
" URL:
"
Last Change:
" Version:
"


" Copied from the cfengine, ruby, and perl syntax files
"
For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("
b:current_syntax")
finish
endif

syn region  puppetDefine        start="
^\s*\(class\|define\|site\|node\)" end="{" contains=puppetDefType,puppetDefName,puppetDefArguments
syn keyword puppetDefType       class define site node inherits contained
syn keyword puppetInherits      inherits contained
syn region  puppetDefArguments  start="
(" end=")" contains=puppetArgument
syn match   puppetArgument      "
\w\+" contained
syn match   puppetArgument      "
\$\w\+" contained
syn match   puppetArgument      "
'[^']+'" contained
syn match   puppetArgument      '
"[^"]+"' contained
syn match   puppetDefName     "
\w\+" contained

syn match   puppetInstance           "
\w\+\s*{" contains=puppetTypeBrace,puppetTypeName,puppetTypeDefault
syn match   puppetTypeBrace       "
{" contained
syn match   puppetTypeName       "
[a-z]\w*" contained
syn match   puppetTypeDefault    "
[A-Z]\w*" contained

syn match   puppetParam           "
\w\+\s*=>" contains=puppetTypeRArrow,puppetParamName
syn match   puppetParamRArrow       "
=>" contained
syn match   puppetParamName       "
\w\+" contained
syn match   puppetVariable           "
$\w\+"
syn match   puppetVariable           "
${\w\+}"
syn match   puppetParen           "
("
syn match   puppetParen           "
)"
syn match   puppetBrace           "
{"
syn match   puppetBrace           "
}"

syn region  puppetString start=+"
+ skip=+\\\\\|\\"+ end=+"+ contains=puppetVariable

syn keyword puppetBoolean    true false
syn keyword puppetKeyword    import inherits include
syn keyword puppetControl    case default

" comments last overriding everything else
syn match   puppetComment            "
\s*#.*$" contains=puppetTodo
syn keyword puppetTodo               TODO NOTE FIXME XXX contained

" Define the default highlighting.
"
For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("
did_puppet_syn_inits")
if version < 508
let did_puppet_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif

HiLink puppetVariable             Identifier
HiLink puppetBoolean              Boolean
HiLink puppetType                 Identifier
HiLink puppetDefault              Identifier
HiLink puppetKeyword              Define
HiLink puppetTypeDefs             Define
HiLink puppetComment              Comment
HiLink puppetString               String
HiLink puppetTodo                 Todo
"
 HiLink puppetBrace                Delimiter
"  HiLink puppetTypeBrace            Delimiter
"
 HiLink puppetParen                Delimiter
HiLink puppetDelimiter            Delimiter
HiLink puppetControl              Statement
HiLink puppetDefType              Define
HiLink puppetDefName              Type
HiLink puppetTypeName             Statement
HiLink puppetTypeDefault          Type
HiLink puppetParamName            Identifier
HiLink puppetArgument             Identifier

delcommand HiLink
endif

let b:current_syntax = "puppet"

然后创建目录ftdetect

#mkdir ftdetect

编辑第二个文件:

#vi ftdetect/puppet.vim

au BufRead,BufNewFile *.pp setfiletype puppet

OK!

效果自己体验吧