diff --git a/runtime/syntax/mojo.vim b/runtime/syntax/mojo.vim
new file mode 100644
index 0000000..b7dae24
--- /dev/null
+++ b/runtime/syntax/mojo.vim
@@ -0,0 +1,316 @@
+" Vim syntax file
+" Language:	Mojo
+" Maintainer:	Mahmoud Abduljawad <me@mahmoudajawad.com>
+" Last Change:	2023 Sep 09
+" Credits:	Mahmoud Abduljawad <me@mahmoudajawad.com>
+"         	Neil Schemenauer <nas@python.ca>
+"		Dmitry Vasiliev
+"
+"		This is based on Vim Python highlighting
+"
+"		- introduced highlighting of doctests
+"		- updated keywords, built-ins, and exceptions
+"		- corrected regular expressions for
+"
+"		  * functions
+"		  * decorators
+"		  * strings
+"		  * escapes
+"		  * numbers
+"		  * space error
+"
+"		- corrected synchronization
+"		- more highlighting is ON by default, except
+"		- space error highlighting is OFF by default
+"
+" Optional highlighting can be controlled using these variables.
+"
+"   let mojo_no_builtin_highlight = 1
+"   let mojo_no_doctest_code_highlight = 1
+"   let mojo_no_doctest_highlight = 1
+"   let mojo_no_exception_highlight = 1
+"   let mojo_no_number_highlight = 1
+"   let mojo_space_error_highlight = 1
+"
+" All the options above can be switched on together.
+"
+"   let mojo_highlight_all = 1
+"
+" The use of Python 2 compatible syntax highlighting can be enforced.
+" The straddling code (Python 2 and 3 compatible), up to Python 3.5,
+" will be also supported.
+"
+"   let mojo_use_python2_syntax = 1
+"
+" This option will exclude all modern Python 3.6 or higher features.
+"
+
+" quit when a syntax file was already loaded.
+if exists("b:current_syntax")
+  finish
+endif
+
+" We need nocompatible mode in order to continue lines with backslashes.
+" Original setting will be restored.
+let s:cpo_save = &cpo
+set cpo&vim
+
+if exists("mojo_no_doctest_highlight")
+  let mojo_no_doctest_code_highlight = 1
+endif
+
+if exists("mojo_highlight_all")
+  if exists("mojo_no_builtin_highlight")
+    unlet mojo_no_builtin_highlight
+  endif
+  if exists("mojo_no_doctest_code_highlight")
+    unlet mojo_no_doctest_code_highlight
+  endif
+  if exists("mojo_no_doctest_highlight")
+    unlet mojo_no_doctest_highlight
+  endif
+  if exists("mojo_no_exception_highlight")
+    unlet mojo_no_exception_highlight
+  endif
+  if exists("mojo_no_number_highlight")
+    unlet mojo_no_number_highlight
+  endif
+  let mojo_space_error_highlight = 1
+endif
+
+" These keywords are based on Python syntax highlight, and adds to it struct,
+" fn, alias, var, let
+"
+syn keyword mojoStatement	False None True
+syn keyword mojoStatement	as assert break continue del global
+syn keyword mojoStatement	lambda nonlocal pass return with yield
+syn keyword mojoStatement	class def nextgroup=mojoFunction skipwhite
+syn keyword mojoStatement	struct fn nextgroup=mojoFunction skipwhite
+syn keyword mojoStatement	alias var let
+syn keyword mojoConditional	elif else if
+syn keyword mojoRepeat		for while
+syn keyword mojoOperator	and in is not or
+syn keyword mojoException	except finally raise try
+syn keyword mojoInclude		from import
+syn keyword mojoAsync		async await
+
+" Soft keywords
+" These keywords do not mean anything unless used in the right context.
+" See https://docs.python.org/3/reference/lexical_analysis.html#soft-keywords
+" for more on this.
+syn match   mojoConditional   "^\s*\zscase\%(\s\+.*:.*$\)\@="
+syn match   mojoConditional   "^\s*\zsmatch\%(\s\+.*:\s*\%(#.*\)\=$\)\@="
+
+" Decorators
+" A dot must be allowed because of @MyClass.myfunc decorators.
+syn match   mojoDecorator	"@" display contained
+syn match   mojoDecoratorName	"@\s*\h\%(\w\|\.\)*" display contains=pythonDecorator
+
+" Python 3.5 introduced the use of the same symbol for matrix multiplication:
+" https://www.python.org/dev/peps/pep-0465/.  We now have to exclude the
+" symbol from highlighting when used in that context.
+" Single line multiplication.
+syn match   mojoMatrixMultiply
+      \ "\%(\w\|[])]\)\s*@"
+      \ contains=ALLBUT,mojoDecoratorName,mojoDecorator,mojoFunction,mojoDoctestValue
+      \ transparent
+" Multiplication continued on the next line after backslash.
+syn match   mojoMatrixMultiply
+      \ "[^\\]\\\s*\n\%(\s*\.\.\.\s\)\=\s\+@"
+      \ contains=ALLBUT,mojoDecoratorName,mojoDecorator,mojoFunction,mojoDoctestValue
+      \ transparent
+" Multiplication in a parenthesized expression over multiple lines with @ at
+" the start of each continued line; very similar to decorators and complex.
+syn match   mojoMatrixMultiply
+      \ "^\s*\%(\%(>>>\|\.\.\.\)\s\+\)\=\zs\%(\h\|\%(\h\|[[(]\).\{-}\%(\w\|[])]\)\)\s*\n\%(\s*\.\.\.\s\)\=\s\+@\%(.\{-}\n\%(\s*\.\.\.\s\)\=\s\+@\)*"
+      \ contains=ALLBUT,mojoDecoratorName,mojoDecorator,mojoFunction,mojoDoctestValue
+      \ transparent
+
+syn match   mojoFunction	"\h\w*" display contained
+
+syn match   mojoComment	"#.*$" contains=mojoTodo,@Spell
+syn keyword mojoTodo		FIXME NOTE NOTES TODO XXX contained
+
+" Triple-quoted strings can contain doctests.
+syn region  mojoString matchgroup=mojoQuotes
+      \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
+      \ contains=mojoEscape,@Spell
+syn region  mojoString matchgroup=mojoTripleQuotes
+      \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
+      \ contains=mojoEscape,mojoSpaceError,mojoDoctest,@Spell
+syn region  mojoRawString matchgroup=mojoQuotes
+      \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
+      \ contains=@Spell
+syn region  mojoRawString matchgroup=pythonTripleQuotes
+      \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
+      \ contains=pythonSpaceError,mojoDoctest,@Spell
+
+syn match   mojoEscape	+\\[abfnrtv'"\\]+ contained
+syn match   mojoEscape	"\\\o\{1,3}" contained
+syn match   mojoEscape	"\\x\x\{2}" contained
+syn match   mojoEscape	"\%(\\u\x\{4}\|\\U\x\{8}\)" contained
+" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
+syn match   mojoEscape	"\\N{\a\+\%(\s\a\+\)*}" contained
+syn match   mojoEscape	"\\$"
+
+" It is very important to understand all details before changing the
+" regular expressions below or their order.
+" The word boundaries are *not* the floating-point number boundaries
+" because of a possible leading or trailing decimal point.
+" The expressions below ensure that all valid number literals are
+" highlighted, and invalid number literals are not.  For example,
+"
+" - a decimal point in '4.' at the end of a line is highlighted,
+" - a second dot in 1.0.0 is not highlighted,
+" - 08 is not highlighted,
+" - 08e0 or 08j are highlighted,
+"
+" and so on, as specified in the 'Python Language Reference'.
+" https://docs.python.org/reference/lexical_analysis.html#numeric-literals
+if !exists("mojo_no_number_highlight")
+  " numbers (including complex)
+  syn match   mojoNumber	"\<0[oO]\%(_\=\o\)\+\>"
+  syn match   mojoNumber	"\<0[xX]\%(_\=\x\)\+\>"
+  syn match   mojoNumber	"\<0[bB]\%(_\=[01]\)\+\>"
+  syn match   mojoNumber	"\<\%([1-9]\%(_\=\d\)*\|0\+\%(_\=0\)*\)\>"
+  syn match   mojoNumber	"\<\d\%(_\=\d\)*[jJ]\>"
+  syn match   mojoNumber	"\<\d\%(_\=\d\)*[eE][+-]\=\d\%(_\=\d\)*[jJ]\=\>"
+  syn match   mojoNumber
+        \ "\<\d\%(_\=\d\)*\.\%([eE][+-]\=\d\%(_\=\d\)*\)\=[jJ]\=\%(\W\|$\)\@="
+  syn match   mojoNumber
+        \ "\%(^\|\W\)\zs\%(\d\%(_\=\d\)*\)\=\.\d\%(_\=\d\)*\%([eE][+-]\=\d\%(_\=\d\)*\)\=[jJ]\=\>"
+endif
+
+" The built-ins are added in the same order of appearance in Mojo stdlib docs
+" https://docs.modular.com/mojo/lib.html
+"
+if !exists("mojo_no_builtin_highlight")
+  " Built-in functions
+  syn keyword mojoBuiltin	slice constrained debug_assert put_new_line print
+  syn keyword mojoBuiltin	print_no_newline len range rebind element_type 
+  syn keyword mojoBuiltin	ord chr atol isdigit index address string
+  " Built-in types
+  syn keyword mojoType		Byte ListLiteral CoroutineContext Coroutine DType
+  syn keyword mojoType		dtype type invalid bool int8 si8 unit8 ui8 int16 
+  syn keyword mojoType		si16 unit16 ui16 int32 si32 uint32 ui32 int64 
+  syn keyword mojoType		si64 uint64 ui64 bfloat16 bf16 float16 f16 float32
+  syn keyword mojoType		f32 float64 f64 Error FloatLiteral Int Attr SIMD 
+  syn keyword mojoType		Int8 UInt8 Int16 UInt16 Int32 UInt32 Int64 UInt64
+  syn keyword mojoType		Float16 Float32 Float64 element_type _65x13_type
+  syn keyword mojoType		String StringLiteral StringRef Tuple AnyType
+  syn keyword mojoType		NoneType None Lifetime
+  " avoid highlighting attributes as builtins
+  syn match   mojoAttribute	/\.\h\w*/hs=s+1
+	\ contains=ALLBUT,mojoBuiltin,mojoFunction,mojoAsync
+	\ transparent
+endif
+
+" From the 'Python Library Reference' class hierarchy at the bottom.
+" http://docs.python.org/library/exceptions.html
+if !exists("mojo_no_exception_highlight")
+  " builtin base exceptions (used mostly as base classes for other exceptions)
+  syn keyword mojoExceptions	BaseException Exception
+  syn keyword mojoExceptions	ArithmeticError BufferError LookupError
+  " builtin exceptions (actually raised)
+  syn keyword mojoExceptions	AssertionError AttributeError EOFError
+  syn keyword mojoExceptions	FloatingPointError GeneratorExit ImportError
+  syn keyword mojoExceptions	IndentationError IndexError KeyError
+  syn keyword mojoExceptions	KeyboardInterrupt MemoryError
+  syn keyword mojoExceptions	ModuleNotFoundError NameError
+  syn keyword mojoExceptions	NotImplementedError OSError OverflowError
+  syn keyword mojoExceptions	RecursionError ReferenceError RuntimeError
+  syn keyword mojoExceptions	StopAsyncIteration StopIteration SyntaxError
+  syn keyword mojoExceptions	SystemError SystemExit TabError TypeError
+  syn keyword mojoExceptions	UnboundLocalError UnicodeDecodeError
+  syn keyword mojoExceptions	UnicodeEncodeError UnicodeError
+  syn keyword mojoExceptions	UnicodeTranslateError ValueError
+  syn keyword mojoExceptions	ZeroDivisionError
+  " builtin exception aliases for OSError
+  syn keyword mojoExceptions	EnvironmentError IOError WindowsError
+  " builtin OS exceptions in Python 3
+  syn keyword mojoExceptions	BlockingIOError BrokenPipeError
+  syn keyword mojoExceptions	ChildProcessError ConnectionAbortedError
+  syn keyword mojoExceptions	ConnectionError ConnectionRefusedError
+  syn keyword mojoExceptions	ConnectionResetError FileExistsError
+  syn keyword mojoExceptions	FileNotFoundError InterruptedError
+  syn keyword mojoExceptions	IsADirectoryError NotADirectoryError
+  syn keyword mojoExceptions	PermissionError ProcessLookupError TimeoutError
+  " builtin warnings
+  syn keyword mojoExceptions	BytesWarning DeprecationWarning FutureWarning
+  syn keyword mojoExceptions	ImportWarning PendingDeprecationWarning
+  syn keyword mojoExceptions	ResourceWarning RuntimeWarning
+  syn keyword mojoExceptions	SyntaxWarning UnicodeWarning
+  syn keyword mojoExceptions	UserWarning Warning
+endif
+
+if exists("mojo_space_error_highlight")
+  " trailing whitespace
+  syn match   mojoSpaceError	display excludenl "\s\+$"
+  " mixed tabs and spaces
+  syn match   mojoSpaceError	display " \+\t"
+  syn match   mojoSpaceError	display "\t\+ "
+endif
+
+" Do not spell doctests inside strings.
+" Notice that the end of a string, either ''', or """, will end the contained
+" doctest too.  Thus, we do *not* need to have it as an end pattern.
+if !exists("mojo_no_doctest_highlight")
+  if !exists("mojo_no_doctest_code_highlight")
+    syn region mojoDoctest
+	  \ start="^\s*>>>\s" end="^\s*$"
+	  \ contained contains=ALLBUT,mojoDoctest,mojoFunction,@Spell
+    syn region mojoDoctestValue
+	  \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$"
+	  \ contained
+  else
+    syn region mojoDoctest
+	  \ start="^\s*>>>" end="^\s*$"
+	  \ contained contains=@NoSpell
+  endif
+endif
+
+" Sync at the beginning of class, function, or method definition.
+syn sync match mojoSync grouphere NONE "^\%(def\|class\)\s\+\h\w*\s*[(:]"
+
+" The default highlight links.  Can be overridden later.
+hi def link mojoStatement		Statement
+hi def link mojoConditional		Conditional
+hi def link mojoRepeat			Repeat
+hi def link mojoOperator		Operator
+hi def link mojoException		Exception
+hi def link mojoInclude			Include
+hi def link mojoAsync			Statement
+hi def link mojoDecorator		Define
+hi def link mojoDecoratorName		Function
+hi def link mojoFunction		Function
+hi def link mojoComment			Comment
+hi def link mojoTodo			Todo
+hi def link mojoString			String
+hi def link mojoRawString		String
+hi def link mojoQuotes			String
+hi def link mojoTripleQuotes		mojoQuotes
+hi def link mojoEscape			Special
+if !exists("mojo_no_number_highlight")
+  hi def link mojoNumber		Number
+endif
+if !exists("mojo_no_builtin_highlight")
+  hi def link mojoBuiltin		Function
+  hi def link mojoType			Type
+endif
+if !exists("mojo_no_exception_highlight")
+  hi def link mojoExceptions		Structure
+endif
+if exists("mojo_space_error_highlight")
+  hi def link mojoSpaceError		Error
+endif
+if !exists("mojo_no_doctest_highlight")
+  hi def link mojoDoctest		Special
+  hi def link mojoDoctestValue	Define
+endif
+
+let b:current_syntax = "mojo"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim:set sw=2 sts=2 ts=8 noet:
