diff --git a/vim/syntax/html.vim b/vim/syntax/html.vim
new file mode 100644
index 0000000..8555e71
--- /dev/null
+++ b/vim/syntax/html.vim
@@ -0,0 +1,389 @@
+" Vim syntax file
+" Language: HTML
+" Maintainer: Jorge Maldonado Ventura
+" Previous Maintainer: Claudio Fleiner
+" Repository: https://notabug.org/jorgesumle/vim-html-syntax
+" Last Change: 2017 Jan 21
+" included patch from Jorge Maldonado Ventura
+
+" Please check :help html.vim for some comments and a description of the options
+
+" quit when a syntax file was already loaded
+if !exists("main_syntax")
+ if exists("b:current_syntax")
+ finish
+ endif
+ let main_syntax = 'html'
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syntax spell toplevel
+
+syn case ignore
+
+
+" mark illegal characters
+syn match htmlError "[<>&]"
+
+syn region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc keepend
+syn region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc keepend
+
+" css classes
+syn region cssClassRegion contained start=+class="+hs=s+7 end=+"+he=e-1 contains=htmlSpecialChar,cssClassAttr,cssAttrNoise,cssClassName keepend
+syn region cssClassRegion contained start=+class='+hs=s+7 end=+'+he=e-1 contains=htmlSpecialChar,cssClassAttr,cssAttrNoise,cssClassName keepend
+syn region cssClassName contained start=+"+hs=s+1 end=+"+he=e-1 contains=cssAttrNoise keepend
+syn region cssClassName contained start=+'+hs=s+1 end=+'+he=e-1 contains=cssAttrNoise keepend
+syn match cssClassAttr "class" contained
+
+" css IDs
+syn region cssIdRegion contained start=+id="+hs=s+4 end=+"+he=e-1 contains=htmlSpecialChar,cssIdentifierAttr,cssAttrNoise,cssIdentifier keepend
+syn region cssIdRegion contained start=+id='+hs=s+4 end=+'+he=e-1 contains=htmlSpecialChar,cssIdentifierAttr,cssAttrNoise,cssIdentifier keepend
+syn region cssIdentifier contained start=+"+hs=s+1 end=+"+he=s-1 contains=cssAttrNoise keepend
+syn region cssIdentifier contained start=+'+hs=s+1 end=+'+he=s-1 contains=cssAttrNoise keepend
+syn match cssIdentifierAttr "id" contained
+
+" img arguments
+syn region htmlArgRegion contained start=+src="+hs=s+5 end=+"+he=e-1 contains=htmlSpecialChar,cssAttrNoise,htmlSrcArg,htmlSrcValue keepend
+syn region htmlArgRegion contained start=+src='+hs=s+5 end=+'+he=e-1 contains=htmlSpecialChar,cssAttrNoise,htmlSrcArg,htmlSrcValue keepend
+syn region htmlSrcValue contained start=+"+hs=s+1 end=+"+he=s-1 contains=cssAttrNoise keepend
+syn region htmlSrcValue contained start=+'+hs=s+1 end=+'+he=s-1 contains=cssAttrNoise keepend
+syn match htmlSrcArg "src" contained
+
+syn region htmlArgRegion contained start=+srcset="+hs=s+8 end=+"+he=e-1 contains=htmlSpecialChar,htmlSrcsetArg,htmlSrcsetValue,cssAttrNoise keepend
+syn region htmlArgRegion contained start=+srcset='+hs=s+8 end=+'+he=e-1 contains=htmlSpecialChar,htmlSrcsetArg,htmlSrcsetValue,cssAttrNoise keepend
+syn region htmlSrcsetValue contained start=+"+hs=s+1 end=+"+he=s-1 contains=cssAttrNoise keepend
+syn region htmlSrcsetValue contained start=+'+hs=s+1 end=+'+he=s-1 contains=cssAttrNoise keepend
+syn match htmlSrcsetArg "srcset" contained
+
+syn region htmlArgRegion contained start=+alt="+hs=s+5 end=+"+he=e-1 contains=htmlSpecialChar,htmlAltArg,htmlAltValue,cssAttrNoise keepend
+syn region htmlArgRegion contained start=+alt='+hs=s+5 end=+'+he=e-1 contains=htmlSpecialChar,htmlAltArg,htmlAltValue,cssAttrNoise keepend
+syn region htmlAltValue contained start=+"+hs=s+1 end=+"+he=s-1 contains=cssAttrNoise keepend
+syn region htmlAltValue contained start=+'+hs=s+1 end=+'+he=s-1 contains=cssAttrNoise keepend
+syn match htmlAltArg "alt" contained
+
+" data-*
+syn region htmlArgRegion contained start=+data.*="+ end=+"+ contains=htmlDataArg,htmlDataValue,cssAttrNoise,htmlTag keepend
+syn region htmlArgRegion contained start=+data.*='+ end=+'+ contains=htmlDataArg,htmlDataValue,cssAttrNoise,htmlTag keepend
+syn region htmlDataValue contained start=+"+hs=s+1 end=+"+me=e-1 contains=cssAttrNoise keepend
+syn region htmlDataValue contained start=+'+hs=s+1 end=+'+me=e-1 contains=cssAttrNoise keepend
+syn match htmlDataArg +data.*="+me=e-2 contained
+
+" href
+syn region htmlArgRegion contained start=+href="+hs=s+7 end=+"+he=e-1 contains=htmlSpecialChar,htmlHrefArg,htmlHrefValue,cssAttrNoise keepend
+syn region htmlArgRegion contained start=+href='+hs=s+7 end=+'+he=e-1 contains=htmlSpecialChar,htmlHrefArg,htmlHrefValue,cssAttrNoise keepend
+syn region htmlHrefValue contained start=+"+hs=s+1 end=+"+he=s-1 contains=cssAttrNoise keepend
+syn region htmlHrefValue contained start=+'+hs=s+1 end=+'+he=s-1 contains=cssAttrNoise keepend
+syn match htmlHrefArg "href" contained
+
+syn match cssAttrNoise +=+ contained
+
+"TODO better group links
+hi def link cssAttrNoise htmlTag
+hi def link cssClassName Identifier
+hi def link cssClassAttr Type
+hi def link cssIdentifier Identifier
+hi def link cssIdentifierAttr Type
+hi def link htmlSrcValue htmlImgValue
+hi def link htmlSrcArg htmlImgArg
+hi def link htmlSrcsetValue htmlImgValue
+hi def link htmlSrcsetArg htmlImgArg
+hi def link htmlAltValue htmlImgValue
+hi def link htmlAltArg htmlImgArg
+hi def link htmlImgValue Identifier
+hi def link htmlImgArg Type
+hi def link htmlDataValue Identifier
+hi def link htmlDataArg Special
+hi def link htmlHrefValue Identifier
+hi def link htmlHrefArg Type
+
+
+syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=javaScriptExpression,@htmlPreproc
+syn region htmlEndTag start=++ end=+>+ contains=htmlTagN,htmlTagError
+syn region htmlTag start=+<[^/]+ end=+>+ fold contains=htmlTagN,htmlString,cssClassRegion,cssIdRegion,htmlArgregion,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
+syn match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
+syn match htmlTagN contained +\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
+syn match htmlTagError contained "[^>]<"ms=s+1
+
+
+" tag names
+syn keyword htmlTagName contained address applet area a base basefont
+syn keyword htmlTagName contained big blockquote br caption center
+syn keyword htmlTagName contained cite code dd dfn dir div dl dt font
+syn keyword htmlTagName contained form hr html img
+syn keyword htmlTagName contained input isindex kbd li link map menu
+syn keyword htmlTagName contained meta ol option param pre p samp span
+syn keyword htmlTagName contained select small strike sub sup
+syn keyword htmlTagName contained table td textarea th tr tt ul var xmp
+syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>"
+
+" new html 4.0 tags
+syn keyword htmlTagName contained abbr acronym bdo button col label
+syn keyword htmlTagName contained colgroup del fieldset iframe ins legend
+syn keyword htmlTagName contained object optgroup q s tbody tfoot thead
+
+" new html 5 tags
+syn keyword htmlTagName contained article aside audio bdi canvas
+syn keyword htmlTagName contained datalist details embed figcaption figure
+syn keyword htmlTagName contained footer header hgroup keygen main mark
+syn keyword htmlTagName contained menuitem meter nav output picture
+syn keyword htmlTagName contained progress rb rp rt rtc ruby section
+syn keyword htmlTagName contained slot source template time track video wbr
+
+" legal arg names
+syn keyword htmlArg contained action
+syn keyword htmlArg contained align alink archive background bgcolor
+syn keyword htmlArg contained border bordercolor cellpadding
+syn keyword htmlArg contained cellspacing checked clear code codebase color
+syn keyword htmlArg contained cols colspan content coords enctype face
+syn keyword htmlArg contained gutter height hspace
+syn keyword htmlArg contained link lowsrc marginheight
+syn keyword htmlArg contained marginwidth maxlength method name prompt
+syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape
+syn keyword htmlArg contained size start target text type url
+syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap
+"syn match htmlArg contained "\<\(http-equiv\|href\|title\)="me=e-1
+syn match htmlArg contained "\<\(http-equiv\|title\)="me=e-1
+
+" Netscape extensions
+syn keyword htmlTagName contained frame noframes frameset nobr blink
+syn keyword htmlTagName contained layer ilayer nolayer spacer
+syn keyword htmlArg contained frameborder noresize pagex pagey above below
+syn keyword htmlArg contained left top visibility clip noshade
+syn match htmlArg contained "\"
+
+" Microsoft extensions
+syn keyword htmlTagName contained marquee
+
+
+
+" html 4.0 arg names
+syn match htmlArg contained "\<\(accept-charset\|label\)\>"
+syn keyword htmlArg contained abbr accept accesskey axis char charoff charset
+syn keyword htmlArg contained cite classid codetype compact datetime
+syn keyword htmlArg contained declare defer dir disabled for frame
+syn keyword htmlArg contained headers hreflang lang language longdesc
+syn keyword htmlArg contained multiple nohref nowrap object profile readonly
+syn keyword htmlArg contained rules scheme scope span standby style
+syn keyword htmlArg contained summary tabindex valuetype version
+
+" html 5 arg names
+syn keyword htmlArg contained allowfullscreen async autocomplete autofocus
+syn keyword htmlArg contained autoplay challenge contenteditable contextmenu
+syn keyword htmlArg contained controls crossorigin default dirname download
+syn keyword htmlArg contained draggable dropzone form formaction formenctype
+syn keyword htmlArg contained formmethod formnovalidate formtarget hidden
+syn keyword htmlArg contained high icon inputmode keytype kind list loop low
+syn keyword htmlArg contained max min minlength muted nonce novalidate open
+syn keyword htmlArg contained optimum pattern placeholder poster preload
+syn keyword htmlArg contained radiogroup required reversed sandbox spellcheck
+syn keyword htmlArg contained sizes srcdoc srclang step title translate
+syn keyword htmlArg contained typemustmatch
+
+" special characters
+syn match htmlSpecialChar "\=[0-9A-Za-z]\{1,8};"
+
+" Comments (the real ones or the old netscape ones)
+if exists("html_wrong_comments")
+ syn region htmlComment start=++ contains=htmlPreStmt,htmlPreError,htmlPreAttr
+syn match htmlPreStmt contained "\)"
+ syn region htmlCssDefinition matchgroup=htmlArg start='style="' keepend matchgroup=htmlString end='"' contains=css.*Attr,css.*Prop,cssComment,cssLength,cssColor,cssURL,cssImportant,cssError,cssString,@htmlPreproc
+ hi def link htmlStyleArg htmlString
+endif
+
+if main_syntax == "html"
+ " synchronizing (does not always work if a comment includes legal
+ " html tags, but doing it right would mean to always start
+ " at the first line, which is too slow)
+ syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]"
+ syn sync match htmlHighlight groupthere javaScript "+ contains=@phpClTop
+ if exists("php_asp_tags")
+ syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop
+ endif
+else
+ if exists("php_noShortTags")
+ syn region phpRegion matchgroup=Delimiter start="" contains=@phpClTop keepend
+ else
+ syn region phpRegion matchgroup=Delimiter start="\(php\)\=" end="?>" contains=@phpClTop keepend
+ endif
+ syn region phpRegionSc matchgroup=Delimiter start=++ contains=@phpClTop keepend
+ if exists("php_asp_tags")
+ syn region phpRegionAsp matchgroup=Delimiter start="<%\(=\)\=" end="%>" contains=@phpClTop keepend
+ endif
+endif
+
+" Fold
+if exists("php_folding") && php_folding==1
+" match one line constructs here and skip them at folding
+ syn keyword phpSCKeyword abstract final private protected public static contained
+ syn keyword phpFCKeyword function contained
+ syn keyword phpStorageClass global contained
+ syn match phpDefine "\(\s\|^\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\(\s\+.*[;}]\)\@=" contained contains=phpSCKeyword
+ syn match phpStructure "\(\s\|^\)\(abstract\s\+\|final\s\+\)*\(trait\|class\)\(\s\+.*}\)\@=" contained
+ syn match phpStructure "\(\s\|^\)interface\(\s\+.*}\)\@=" contained
+ syn match phpException "\(\s\|^\)try\(\s\+.*}\)\@=" contained
+ syn match phpException "\(\s\|^\)catch\(\s\+.*}\)\@=" contained
+ syn match phpException "\(\s\|^\)finally\(\s\+.*}\)\@=" contained
+
+ set foldmethod=syntax
+ syn region phpFoldHtmlInside matchgroup=Delimiter start="?>" end="\(php\)\=" contained transparent contains=@htmlTop
+ syn region phpFoldFunction matchgroup=Storageclass start="^\z(\s*\)\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function\s\([^};]*$\)\@="rs=e-9 matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldHtmlInside,phpFCKeyword contained transparent fold extend
+ syn region phpFoldFunction matchgroup=Define start="^function\s\([^};]*$\)\@=" matchgroup=Delimiter end="^}" contains=@phpClFunction,phpFoldHtmlInside contained transparent fold extend
+ syn region phpFoldClass matchgroup=Structure start="^\z(\s*\)\(abstract\s\+\|final\s\+\)*\(trait\|class\)\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction,phpSCKeyword contained transparent fold extend
+ syn region phpFoldInterface matchgroup=Structure start="^\z(\s*\)interface\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
+ syn region phpFoldCatch matchgroup=Exception start="^\z(\s*\)catch\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
+ syn region phpFoldTry matchgroup=Exception start="^\z(\s*\)try\s\+\([^}]*$\)\@=" matchgroup=Delimiter end="^\z1}" contains=@phpClFunction,phpFoldFunction contained transparent fold extend
+else
+ syn keyword phpDefine function contained
+ syn keyword phpStructure abstract class trait interface contained
+ syn keyword phpException catch throw try finally contained
+ syn keyword phpStorageClass final global private protected public static contained
+ if exists("php_folding") && php_folding==2
+ set foldmethod=syntax
+ syn region phpFoldHtmlInside matchgroup=Delimiter start="?>" end="\(php\)\=" contained transparent contains=@htmlTop
+ syn region phpParent matchgroup=Delimiter start="{" end="}" contained contains=@phpClFunction,phpFoldHtmlInside transparent fold
+ endif
+endif
+
+" ================================================================
+" Peter Hodge - June 9, 2006
+" Some of these changes (highlighting isset/unset/echo etc) are not so
+" critical, but they make things more colourful. :-)
+
+" different syntax highlighting for 'echo', 'print', 'switch', 'die' and 'list' keywords
+" to better indicate what they are.
+syntax keyword phpDefine echo print contained
+syntax keyword phpStructure list contained
+syntax keyword phpConditional switch contained
+syntax keyword phpStatement die contained
+
+" Highlighting for PHP5's user-definable magic class methods
+syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier
+ \ __construct __destruct __call __callStatic __get __set __isset __unset __sleep __wakeup __toString __invoke __set_state __clone __debugInfo
+" Highlighting for __autoload slightly different from line above
+syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
+ \ __autoload
+hi def link phpSpecialFunction phpOperator
+
+" Highlighting for PHP5's built-in classes
+" - built-in classes harvested from get_declared_classes() in 5.1.4
+syntax keyword phpClasses containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
+ \ stdClass __PHP_Incomplete_Class php_user_filter Directory ArrayObject
+ \ Exception ErrorException LogicException BadFunctionCallException BadMethodCallException DomainException
+ \ RecursiveIteratorIterator IteratorIterator FilterIterator RecursiveFilterIterator ParentIterator LimitIterator
+ \ CachingIterator RecursiveCachingIterator NoRewindIterator AppendIterator InfiniteIterator EmptyIterator
+ \ ArrayIterator RecursiveArrayIterator DirectoryIterator RecursiveDirectoryIterator
+ \ InvalidArgumentException LengthException OutOfRangeException RuntimeException OutOfBoundsException
+ \ OverflowException RangeException UnderflowException UnexpectedValueException
+ \ PDO PDOException PDOStatement PDORow
+ \ Reflection ReflectionFunction ReflectionParameter ReflectionMethod ReflectionClass
+ \ ReflectionObject ReflectionProperty ReflectionExtension ReflectionException
+ \ SplFileInfo SplFileObject SplTempFileObject SplObjectStorage
+ \ XMLWriter LibXMLError XMLReader SimpleXMLElement SimpleXMLIterator
+ \ DOMException DOMStringList DOMNameList DOMDomError DOMErrorHandler
+ \ DOMImplementation DOMImplementationList DOMImplementationSource
+ \ DOMNode DOMNameSpaceNode DOMDocumentFragment DOMDocument DOMNodeList DOMNamedNodeMap
+ \ DOMCharacterData DOMAttr DOMElement DOMText DOMComment DOMTypeinfo DOMUserDataHandler
+ \ DOMLocator DOMConfiguration DOMCdataSection DOMDocumentType DOMNotation DOMEntity
+ \ DOMEntityReference DOMProcessingInstruction DOMStringExtend DOMXPath
+hi def link phpClasses phpFunctions
+
+" Highlighting for PHP5's built-in interfaces
+" - built-in classes harvested from get_declared_interfaces() in 5.1.4
+syntax keyword phpInterfaces containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle,phpIdentifier,phpMethodsVar
+ \ Iterator IteratorAggregate RecursiveIterator OuterIterator SeekableIterator
+ \ Traversable ArrayAccess Serializable Countable SplObserver SplSubject Reflector
+hi def link phpInterfaces phpConstant
+
+" option defaults:
+if ! exists('php_special_functions')
+ let php_special_functions = 1
+endif
+if ! exists('php_alt_comparisons')
+ let php_alt_comparisons = 1
+endif
+if ! exists('php_alt_assignByReference')
+ let php_alt_assignByReference = 1
+endif
+
+if php_special_functions
+ " Highlighting for PHP built-in functions which exhibit special behaviours
+ " - isset()/unset()/empty() are not real functions.
+ " - compact()/extract() directly manipulate variables in the local scope where
+ " regular functions would not be able to.
+ " - eval() is the token 'make_your_code_twice_as_complex()' function for PHP.
+ " - user_error()/trigger_error() can be overloaded by set_error_handler and also
+ " have the capacity to terminate your script when type is E_USER_ERROR.
+ syntax keyword phpSpecialFunction containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle
+ \ user_error trigger_error isset unset eval extract compact empty
+endif
+
+if php_alt_assignByReference
+ " special highlighting for '=&' operator
+ syntax match phpAssignByRef /=\s*&/ containedin=ALLBUT,phpComment,phpStringDouble,phpStringSingle
+ hi def link phpAssignByRef Type
+endif
+
+if php_alt_comparisons
+ " highlight comparison operators differently
+ syntax match phpComparison "\v[=!]\=\=?" contained containedin=phpRegion
+ syntax match phpComparison "\v[=<>-]@]\=?[<>]@!" contained containedin=phpRegion
+
+ " highlight the 'instanceof' operator as a comparison operator rather than a structure
+ syntax case ignore
+ syntax keyword phpComparison instanceof contained containedin=phpRegion
+
+ hi def link phpComparison Statement
+endif
+
+" ================================================================
+
+" Sync
+if php_sync_method==-1
+ if exists("php_noShortTags")
+ syn sync match phpRegionSync grouphere phpRegion "^\s*\s*$+
+ if exists("php_asp_tags")
+ syn sync match phpRegionSync grouphere phpRegionAsp "^\s*<%\(=\)\=\s*$"
+ endif
+ syn sync match phpRegionSync grouphere NONE "^\s*?>\s*$"
+ syn sync match phpRegionSync grouphere NONE "^\s*%>\s*$"
+ syn sync match phpRegionSync grouphere phpRegion "function\s.*(.*\$"
+ "syn sync match phpRegionSync grouphere NONE "/\i*>\s*$"
+elseif php_sync_method>0
+ exec "syn sync minlines=" . php_sync_method
+else
+ exec "syn sync fromstart"
+endif
+
+syntax match phpDocCustomTags "@[a-zA-Z]*\(\s\+\|\n\|\r\)" containedin=phpComment
+syntax region phpDocTags start="{@\(example\|id\|internal\|inheritdoc\|link\|source\|toc\|tutorial\)" end="}" containedin=phpComment
+syntax match phpDocTags "@\(abstract\|access\|author\|category\|copyright\|deprecated\|example\|final\|global\|ignore\|internal\|license\|link\|method\|name\|package\|param\|property\|return\|see\|since\|static\|staticvar\|subpackage\|tutorial\|uses\|var\|version\|contributor\|modified\|filename\|description\|filesource\|throws\)\(\s\+\)\?" containedin=phpComment
+syntax match phpDocTodo "@\(todo\|fixme\|xxx\)\(\s\+\)\?" containedin=phpComment
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link phpConstant Constant
+hi def link phpCoreConstant Constant
+hi def link phpComment Comment
+hi def link phpDocTags PreProc
+hi def link phpDocCustomTags Type
+hi def link phpException Exception
+hi def link phpBoolean Boolean
+hi def link phpStorageClass StorageClass
+hi def link phpSCKeyword StorageClass
+hi def link phpFCKeyword Define
+hi def link phpStructure Structure
+hi def link phpStringSingle String
+hi def link phpStringDouble String
+hi def link phpBacktick String
+hi def link phpNumber Number
+hi def link phpFloat Float
+hi def link phpMethods Function
+hi def link phpFunctions Function
+hi def link phpBaselib Function
+hi def link phpRepeat Repeat
+hi def link phpConditional Conditional
+hi def link phpLabel Label
+hi def link phpStatement Statement
+hi def link phpKeyword Statement
+hi def link phpType Type
+hi def link phpInclude Include
+hi def link phpDefine Define
+hi def link phpBackslashSequences SpecialChar
+hi def link phpBackslashDoubleQuote SpecialChar
+hi def link phpBackslashSingleQuote SpecialChar
+hi def link phpParent Delimiter
+hi def link phpBrackets Delimiter
+hi def link phpIdentifierConst Delimiter
+hi def link phpParentError Error
+hi def link phpOctalError Error
+hi def link phpInterpSimpleError Error
+hi def link phpInterpBogusDollarCurley Error
+hi def link phpInterpDollarCurly1 Error
+hi def link phpInterpDollarCurly2 Error
+hi def link phpInterpSimpleBracketsInner String
+hi def link phpInterpSimpleCurly Delimiter
+hi def link phpInterpVarname Identifier
+hi def link phpTodo Todo
+hi def link phpDocTodo Todo
+hi def link phpMemberSelector Structure
+if exists("php_oldStyle")
+ hi def phpIntVar guifg=Red ctermfg=DarkRed
+ hi def phpEnvVar guifg=Red ctermfg=DarkRed
+ hi def phpOperator guifg=SeaGreen ctermfg=DarkGreen
+ hi def phpVarSelector guifg=SeaGreen ctermfg=DarkGreen
+ hi def phpRelation guifg=SeaGreen ctermfg=DarkGreen
+ hi def phpIdentifier guifg=DarkGray ctermfg=Brown
+ hi def phpIdentifierSimply guifg=DarkGray ctermfg=Brown
+else
+ hi def link phpIntVar Identifier
+ hi def link phpEnvVar Identifier
+ hi def link phpOperator Operator
+ hi def link phpVarSelector Operator
+ hi def link phpRelation Operator
+ hi def link phpIdentifier Identifier
+ hi def link phpIdentifierSimply Identifier
+endif
+
+
+let b:current_syntax = "php"
+
+if main_syntax == 'php'
+ unlet main_syntax
+endif
+
+" put cpoptions back the way we found it
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sts=2 sw=2 expandtab
diff --git a/vim/syntax/vue.vim b/vim/syntax/vue.vim
new file mode 100644
index 0000000..e974b6f
--- /dev/null
+++ b/vim/syntax/vue.vim
@@ -0,0 +1,75 @@
+" Vim syntax file
+" Language: Vue.js
+" Maintainer: Eduardo San Martin Morote
+
+if exists("b:current_syntax")
+ finish
+endif
+
+runtime! syntax/html.vim
+unlet! b:current_syntax
+
+""
+" Get the pattern for a HTML {name} attribute with {value}.
+function! s:attr(name, value)
+ return a:name . '=\("\|''\)[^\1]*' . a:value . '[^\1]*\1'
+endfunction
+
+""
+" Check whether a syntax file for a given {language} exists.
+function! s:syntax_available(language)
+ return !empty(globpath(&runtimepath, 'syntax/' . a:language . '.vim'))
+endfunction
+
+""
+" Register {language} for a given {tag}. If [attr_override] is given and not
+" empty, it will be used for the attribute pattern.
+function! s:register_language(language, tag, ...)
+ let attr_override = a:0 ? a:1 : ''
+ let attr = !empty(attr_override) ? attr_override : s:attr('lang', a:language)
+
+ if s:syntax_available(a:language)
+ execute 'syntax include @' . a:language . ' syntax/' . a:language . '.vim'
+ unlet! b:current_syntax
+ execute 'syntax region vue_' . a:language
+ \ 'keepend'
+ \ 'start=/<' . a:tag . ' \_[^>]*' . attr . '\_[^>]*>/'
+ \ 'end="' . a:tag . '>"me=s-1'
+ \ 'contains=@' . a:language . ',vueSurroundingTag'
+ \ 'fold'
+ endif
+endfunction
+
+if !exists("g:vue_disable_pre_processors") || !g:vue_disable_pre_processors
+ call s:register_language('pug', 'template', s:attr('lang', '\%(pug\|jade\)'))
+ call s:register_language('slm', 'template')
+ call s:register_language('handlebars', 'template')
+ call s:register_language('haml', 'template')
+ call s:register_language('typescript', 'script', '\%(lang=\("\|''\)[^\1]*\(ts\|typescript\)[^\1]*\1\|ts\)')
+ call s:register_language('coffee', 'script')
+ call s:register_language('stylus', 'style')
+ call s:register_language('sass', 'style')
+ call s:register_language('scss', 'style')
+ call s:register_language('less', 'style')
+endif
+
+syn region vueSurroundingTag contained start=+<\(script\|style\|template\)+ end=+>+ fold contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
+syn keyword htmlSpecialTagName contained template
+syn keyword htmlArg contained scoped ts
+
+syn keyword vueComponentTag contained template containedin=htmlSpecialTagName
+
+syn match vueDirective "[v:][-:.0-9_a-z]*" containedin=htmlTag nextgroup=vueDirectiveValue
+syn match vueEvent "[@][-:.0-9_a-z]*" containedin=htmlTag nextgroup=vueEventValue
+syn match vueConditional "v-else" containedin=htmlTag
+syn match vueConditional "v-if\|v-show" containedin=htmlTag nextgroup=vueConditionalValue
+syn match vueFor "v-for" containedin=htmlTag nextgroup=vueForValue
+syn match vueRef "ref" containedin=htmlTag nextgroup=vueRefValue
+
+syn region vueDirectiveValue contained start=+="+hs=s+2 end=+"+he=e-1
+syn region vueEventValue contained start=+="+hs=s+2 end=+"+he=e-1
+syn region vueConditionalValue contained start=+="+hs=s+2 end=+"+he=e-1
+syn region vueForValue contained start=+="+hs=s+2 end=+"+he=e-1
+syn match vueRefValue contained +="[-:.0-9_a-z]*"+hs=s+2,he=e-1
+
+let b:current_syntax = "vue"