puppet徹底攻略(二)讓puppet代碼支持vim高亮顯示

 

puppet的 pp配置文件尚未被vim支持,編輯時候黑底白字,不容易排錯,看起來也很差分辨,須作進一步修改才能完美顯示
 
須在用戶根目錄下的 .vim裏面添加2個文件,具體以下:
 
1 vim 目錄下建立syntax/puppet.vim:
#mkdir ~/.vim
#cd ~/.vim
#mkdir syntax
#vim 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"
========================================================================
2. vim 目錄下建立ftdetect/puppet.vim
#mkdir ftdetect
vim ftdetect/puppet.vim
 
添加如下內容:
 
========================================================================
au BufRead,BufNewFile *.pp setfiletype puppet
 
========================================================================
 
效果演示:
 
[root@viong]# vim /etc/puppet/manifests/site.pp
 

 

參考文檔:http://www.dongwm.com/archives/rangpuppetdaimazhichivimgaoliangxianshi/html

相關文章
相關標籤/搜索