diff --git a/runtime/syntax/tt2.vim b/runtime/syntax/tt2.vim
new file mode 100644
index 0000000..50b2893
--- /dev/null
+++ b/runtime/syntax/tt2.vim
@@ -0,0 +1,210 @@
+" Language:      TT2 (Perl Template Toolkit)
+" Maintainer:    vim-perl <vim-perl@googlegroups.com>
+" Author:        Moriki, Atsushi <4woods+vim@gmail.com>
+" Homepage:      http://github.com/vim-perl/vim-perl
+" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
+" Last Change:   2013-05-12
+"
+" Instration:
+"   put tt2.vim and tt2html.vim in to your syntax diretory.
+"
+"   add below in your filetype.vim.
+"       au BufNewFile,BufRead *.tt2 setf tt2
+"           or
+"       au BufNewFile,BufRead *.tt2
+"           \ if ( getline(1) . getline(2) . getline(3) =~ '<\chtml' |
+"           \           && getline(1) . getline(2) . getline(3) !~ '<[%?]' ) |
+"           \   || getline(1) =~ '<!DOCTYPE HTML' |
+"           \   setf tt2html |
+"           \ else |
+"           \   setf tt2 |
+"           \ endif
+"
+"   define START_TAG, END_TAG
+"       "ASP"
+"       :let b:tt2_syn_tags = '<% %>'
+"       "PHP"
+"       :let b:tt2_syn_tags = '<? ?>'
+"       "TT2 and HTML"
+"       :let b:tt2_syn_tags = '\[% %] <!-- -->'
+"
+" Changes:
+"           0.1.3
+"               Changed fileformat from 'dos' to 'unix'
+"               Deleted 'echo' that print obstructive message
+"           0.1.2
+"               Added block comment syntax
+"               e.g. [%# COMMENT
+"                        COMMENT TOO %]
+"                    [%# IT'S SAFE %]  HERE IS OUTSIDE OF TT2 DIRECTIVE
+"                    [% # WRONG!! %]   HERE STILL BE COMMENT
+"           0.1.1
+"               Release
+"           0.1.0
+"               Internal
+"
+" License: follow Vim :help uganda
+"
+
+if !exists("b:tt2_syn_tags")
+    let b:tt2_syn_tags = '\[% %]'
+    "let b:tt2_syn_tags = '\[% %] \[\* \*]'
+endif
+
+if !exists("b:tt2_syn_inc_perl")
+    let b:tt2_syn_inc_perl = 1
+endif
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn case match
+
+syn cluster tt2_top_cluster contains=tt2_perlcode,tt2_tag_region
+
+" TT2 TAG Region
+if exists("b:tt2_syn_tags")
+
+    let s:str = b:tt2_syn_tags . ' '
+    let s:str = substitute(s:str,'^ \+','','g')
+    let s:str = substitute(s:str,' \+',' ','g')
+
+    while stridx(s:str,' ') > 0
+
+        let s:st = strpart(s:str,0,stridx(s:str,' '))
+        let s:str = substitute(s:str,'[^ ]* ','',"")
+
+        let s:ed = strpart(s:str,0,stridx(s:str,' '))
+        let s:str = substitute(s:str,'[^ ]* ','',"")
+
+        exec 'syn region  tt2_tag_region '.
+                    \ 'matchgroup=tt2_tag '.
+                    \ 'start=+\(' . s:st .'\)[-]\=+ '.
+                    \ 'end=+[-]\=\(' . s:ed . '\)+ '.
+                    \ 'contains=@tt2_statement_cluster keepend extend'
+
+        exec 'syn region  tt2_commentblock_region '.
+                    \ 'matchgroup=tt2_tag '.
+                    \ 'start=+\(' . s:st .'\)[-]\=\(#\)\@=+ '.
+                    \ 'end=+[-]\=\(' . s:ed . '\)+ '.
+                    \ 'keepend extend'
+
+        "Include Perl syntax when 'PERL' 'RAWPERL' block
+        if b:tt2_syn_inc_perl
+            syn include @Perl $VIMRUNTIME/syntax/perl.vim
+            exec 'syn region tt2_perlcode '.
+                        \ 'start=+\(\(RAW\)\=PERL\s*[-]\=' . s:ed . '\(\n\)\=\)\@<=+ ' .
+                        \ 'end=+' . s:st . '[-]\=\s*END+me=s-1 contains=@Perl keepend'
+        endif
+
+        "echo 'TAGS ' . s:st . ' ' . s:ed
+        unlet s:st
+        unlet s:ed
+    endwhile
+
+else
+
+    syn region  tt2_tag_region
+                \ matchgroup=tt2_tag
+                \ start=+\(\[%\)[-]\=+
+                \ end=+[-]\=%\]+
+                \ contains=@tt2_statement_cluster keepend extend
+
+    syn region  tt2_commentblock_region
+                \ matchgroup=tt2_tag
+                \ start=+\(\[%\)[-]\=#+
+                \ end=+[-]\=%\]+
+                \ keepend extend
+
+    "Include Perl syntax when 'PERL' 'RAWPERL' block
+    if b:tt2_syn_inc_perl
+        syn include @Perl $VIMRUNTIME/syntax/perl.vim
+        syn region tt2_perlcode
+                    \ start=+\(\(RAW\)\=PERL\s*[-]\=%]\(\n\)\=\)\@<=+
+                    \ end=+\[%[-]\=\s*END+me=s-1
+                    \ contains=@Perl keepend
+    endif
+endif
+
+" Directive
+syn keyword tt2_directive contained
+            \ GET CALL SET DEFAULT DEBUG
+            \ LAST NEXT BREAK STOP BLOCK
+            \ IF IN UNLESS ELSIF FOR FOREACH WHILE SWITCH CASE
+            \ USE PLUGIN MACRO META
+            \ TRY FINAL RETURN LAST
+            \ CLEAR TO STEP AND OR NOT MOD DIV
+            \ ELSE PERL RAWPERL END
+syn match   tt2_directive +|+ contained
+syn keyword tt2_directive contained nextgroup=tt2_string_q,tt2_string_qq,tt2_blockname skipwhite skipempty
+            \ INSERT INCLUDE PROCESS WRAPPER FILTER
+            \ THROW CATCH
+syn keyword tt2_directive contained nextgroup=tt2_def_tag skipwhite skipempty
+            \ TAGS
+
+syn match   tt2_def_tag "\S\+\s\+\S\+\|\<\w\+\>" contained
+
+syn match   tt2_variable  +\I\w*+                           contained
+syn match   tt2_operator  "[+*/%:?-]"                       contained
+syn match   tt2_operator  "\<\(mod\|div\|or\|and\|not\)\>"  contained
+syn match   tt2_operator  "[!=<>]=\=\|&&\|||"               contained
+syn match   tt2_operator  "\(\s\)\@<=_\(\s\)\@="            contained
+syn match   tt2_operator  "=>\|,"                           contained
+syn match   tt2_deref     "\([[:alnum:]_)\]}]\s*\)\@<=\."   contained
+syn match   tt2_comment   +#.*$+                            contained extend
+syn match   tt2_func      +\<\I\w*\(\s*(\)\@=+              contained nextgroup=tt2_bracket_r skipempty skipwhite
+"
+syn region  tt2_bracket_r  start=+(+ end=+)+                contained contains=@tt2_statement_cluster keepend extend
+syn region  tt2_bracket_b start=+\[+ end=+]+                contained contains=@tt2_statement_cluster keepend extend
+syn region  tt2_bracket_b start=+{+  end=+}+                contained contains=@tt2_statement_cluster keepend extend
+
+syn region  tt2_string_qq start=+"+ end=+"+ skip=+\\"+      contained contains=tt2_ivariable keepend extend
+syn region  tt2_string_q  start=+'+ end=+'+ skip=+\\'+      contained keepend extend
+
+syn match   tt2_ivariable  +\$\I\w*\>\(\.\I\w*\>\)*+        contained
+syn match   tt2_ivariable  +\${\I\w*\>\(\.\I\w*\>\)*}+      contained
+
+syn match   tt2_number    "\d\+"        contained
+syn match   tt2_number    "\d\+\.\d\+"  contained
+syn match   tt2_number    "0x\x\+"      contained
+syn match   tt2_number    "0\o\+"       contained
+
+syn match   tt2_blockname "\f\+"                       contained                        nextgroup=tt2_blockname_joint skipwhite skipempty
+syn match   tt2_blockname "$\w\+"                      contained contains=tt2_ivariable nextgroup=tt2_blockname_joint skipwhite skipempty
+syn region  tt2_blockname start=+"+ end=+"+ skip=+\\"+ contained contains=tt2_ivariable nextgroup=tt2_blockname_joint keepend skipwhite skipempty
+syn region  tt2_blockname start=+'+ end=+'+ skip=+\\'+ contained                        nextgroup=tt2_blockname_joint keepend skipwhite skipempty
+syn match   tt2_blockname_joint "+"                    contained                        nextgroup=tt2_blockname skipwhite skipempty
+
+syn cluster tt2_statement_cluster contains=tt2_directive,tt2_variable,tt2_operator,tt2_string_q,tt2_string_qq,tt2_deref,tt2_comment,tt2_func,tt2_bracket_b,tt2_bracket_r,tt2_number
+
+" Synchronizing
+syn sync minlines=50
+
+hi def link tt2_tag         Type
+hi def link tt2_tag_region  Type
+hi def link tt2_commentblock_region Comment
+hi def link tt2_directive   Statement
+hi def link tt2_variable    Identifier
+hi def link tt2_ivariable   Identifier
+hi def link tt2_operator    Statement
+hi def link tt2_string_qq   String
+hi def link tt2_string_q    String
+hi def link tt2_blockname   String
+hi def link tt2_comment     Comment
+hi def link tt2_func        Function
+hi def link tt2_number      Number
+
+if exists("b:tt2_syn_tags")
+    unlet b:tt2_syn_tags
+endif
+
+let b:current_syntax = "tt2"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:ts=4:sw=4
