diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim
index 62539de11c4..d71b9fbcf95 100644
--- a/src/etc/vim/syntax/rust.vim
+++ b/src/etc/vim/syntax/rust.vim
@@ -2,7 +2,7 @@
 " Language:     Rust
 " Maintainer:   Patrick Walton <pcwalton@mozilla.com>
 " Maintainer:   Ben Blum <bblum@cs.cmu.edu>
-" Last Change:  2012 Jul 06
+" Last Change:  2012 Dec 14
 
 if version < 600
   syntax clear
@@ -11,16 +11,16 @@ elseif exists("b:current_syntax")
 endif
 
 syn match     rustAssert      "\<assert\(\w\)*"
-syn keyword   rustKeyword     again as break
+syn keyword   rustKeyword     as break
 syn keyword   rustKeyword     const copy do drop else export extern fail
-syn keyword   rustKeyword     for if impl import in let log
-syn keyword   rustKeyword     loop match mod module move mut new of priv pure
+syn keyword   rustKeyword     for if impl let log
+syn keyword   rustKeyword     loop match mod move mut once priv pure
 syn match     rustKeyword     "\<pub\>"
-syn keyword   rustKeyword     ref return static to unchecked
+syn keyword   rustKeyword     ref return static
 syn match     rustKeyword     "\<unsafe\>" " Allows also matching unsafe::foo()
-syn keyword   rustKeyword     use while with
+syn keyword   rustKeyword     use while
 " FIXME: Scoped impl's name is also fallen in this category
-syn keyword   rustKeyword     mod trait class struct enum type nextgroup=rustIdentifier skipwhite
+syn keyword   rustKeyword     mod trait struct enum type nextgroup=rustIdentifier skipwhite
 syn keyword   rustKeyword     fn nextgroup=rustFuncName skipwhite
 
 syn match     rustIdentifier  contains=rustIdentifierPrime "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained