diff --git a/vim-engine/src/main/antlr/RegexLexer.g4 b/vim-engine/src/main/antlr/RegexLexer.g4
index 44d2d6942..73e2a2579 100644
--- a/vim-engine/src/main/antlr/RegexLexer.g4
+++ b/vim-engine/src/main/antlr/RegexLexer.g4
@@ -20,7 +20,8 @@ tokens {
   POSITIVE_LIMITED_LOOKBEHIND, NEGATIVE_LIMITED_LOOKBEHIND, LAST_SUBSTITUTE, VISUAL,
   DECIMAL_CODE, OCTAL_CODE, HEXADECIMAL_CODE, UNICODE_CODE, WIDE_UNICODE_CODE,
   LINE, BEFORE_LINE, AFTER_LINE, COLUMN, BEFORE_COLUMN, AFTER_COLUMN, LINE_CURSOR,
-  BEFORE_LINE_CURSOR, AFTER_LINE_CURSOR
+  BEFORE_LINE_CURSOR, AFTER_LINE_CURSOR, COLUMN_CURSOR, BEFORE_COLUMN_CURSOR,
+  AFTER_COLUMN_CURSOR
 }
 
 @members {
@@ -91,6 +92,9 @@ AFTER_LINE_CURSOR_MAGIC: '\\%>.l' -> type(AFTER_LINE_CURSOR);
 COLUMN_MAGIC: '\\%' [0-9]+ 'c' -> type(COLUMN);
 BEFORE_COLUMN_MAGIC: '\\%<' [0-9]+ 'c' -> type(BEFORE_COLUMN);
 AFTER_COLUMN_MAGIC: '\\%>' [0-9]+ 'c' -> type(AFTER_COLUMN);
+COLUMN_CURSOR_MAGIC: '\\%.c' -> type(COLUMN_CURSOR);
+BEFORE_COLUMN_CURSOR_MAGIC: '\\%<.c' -> type(BEFORE_COLUMN_CURSOR);
+AFTER_COLUMN_CURSOR_MAGIC: '\\%>.c' -> type(AFTER_COLUMN_CURSOR);
 
 // case-related tokens
 IGNORE_CASE_MAGIC: '\\c' { setIgnoreCase(); } -> skip;
@@ -228,6 +232,9 @@ AFTER_LINE_CURSOR_NOMAGIC: '\\%>.l' -> type(AFTER_LINE_CURSOR);
 COLUMN_NOMAGIC: '\\%' [0-9]+ 'c' -> type(COLUMN);
 BEFORE_COLUMN_NOMAGIC: '\\%<' [0-9]+ 'c' -> type(BEFORE_COLUMN);
 AFTER_COLUMN_NOMAGIC: '\\%>' [0-9]+ 'c' -> type(AFTER_COLUMN);
+COLUMN_CURSOR_NOMAGIC: '\\%.c' -> type(COLUMN_CURSOR);
+BEFORE_COLUMN_CURSOR_NOMAGIC: '\\%<.c' -> type(BEFORE_COLUMN_CURSOR);
+AFTER_COLUMN_CURSOR_NOMAGIC: '\\%>.c' -> type(AFTER_COLUMN_CURSOR);
 
 // case-related tokens
 IGNORE_CASE_NOMAGIC: '\\c' { setIgnoreCase(); } -> skip;
@@ -366,6 +373,9 @@ AFTER_LINE_CURSOR_VMAGIC: '%>.l' -> type(AFTER_LINE_CURSOR);
 COLUMN_VMAGIC: '%' [0-9]+ 'c' -> type(COLUMN);
 BEFORE_COLUMN_VMAGIC: '%<' [0-9]+ 'c' -> type(BEFORE_COLUMN);
 AFTER_COLUMN_VMAGIC: '%>' [0-9]+ 'c' -> type(AFTER_COLUMN);
+COLUMN_CURSOR_VMAGIC: '%.c' -> type(COLUMN_CURSOR);
+BEFORE_COLUMN_CURSOR_VMAGIC: '%<.c' -> type(BEFORE_COLUMN_CURSOR);
+AFTER_COLUMN_CURSOR_VMAGIC: '%>.c' -> type(AFTER_COLUMN_CURSOR);
 
 // case-related tokens
 IGNORE_CASE_VMAGIC: '\\c' { setIgnoreCase(); } -> skip;
@@ -503,6 +513,9 @@ AFTER_LINE_CURSOR_VNOMAGIC: '\\%>.l' -> type(AFTER_LINE_CURSOR);
 COLUMN_VNOMAGIC: '\\%' [0-9]+ 'c' -> type(COLUMN);
 BEFORE_COLUMN_VNOMAGIC: '\\%<' [0-9]+ 'c' -> type(BEFORE_COLUMN);
 AFTER_COLUMN_VNOMAGIC: '\\%>' [0-9]+ 'c' -> type(AFTER_COLUMN);
+COLUMN_CURSOR_VNOMAGIC: '\\%.c' -> type(COLUMN_CURSOR);
+BEFORE_COLUMN_CURSOR_VNOMAGIC: '\\%<.c' -> type(BEFORE_COLUMN_CURSOR);
+AFTER_COLUMN_CURSOR_VNOMAGIC: '\\%>.c' -> type(AFTER_COLUMN_CURSOR);
 
 // case-related tokens
 IGNORE_CASE_VNOMAGIC: '\\c' { setIgnoreCase(); } -> skip;
diff --git a/vim-engine/src/main/antlr/RegexParser.g4 b/vim-engine/src/main/antlr/RegexParser.g4
index bea885424..db90c0c30 100644
--- a/vim-engine/src/main/antlr/RegexParser.g4
+++ b/vim-engine/src/main/antlr/RegexParser.g4
@@ -178,25 +178,28 @@ collection_char_class_expression : ALPHA_CLASS     #AlphaClass
  * When using zero-width tokens, no characters are
  * included in the match.
  */
-zero_width : CURSOR             #Cursor
-           | VISUAL             #Visual
-           | START_MATCH        #StartMatch
-           | END_MATCH          #EndMatch
-           | START_OF_FILE      #StartOfFile
-           | END_OF_FILE        #EndOfFile
-           | START_OF_LINE      #StartOfLine
-           | END_OF_LINE        #EndOfLine
-           | START_OF_WORD      #StartOfWord
-           | END_OF_WORD        #EndOfWord
-           | LINE               #Line
-           | BEFORE_LINE        #BeforeLine
-           | AFTER_LINE         #AfterLine
-           | LINE_CURSOR        #LineCursor
-           | BEFORE_LINE_CURSOR #BeforeLineCursor
-           | AFTER_LINE_CURSOR  #AfterLineCursor
-           | COLUMN             #Column
-           | BEFORE_COLUMN      #BeforeColumn
-           | AFTER_COLUMN       #AfterColumn
+zero_width : CURSOR               #Cursor
+           | VISUAL               #Visual
+           | START_MATCH          #StartMatch
+           | END_MATCH            #EndMatch
+           | START_OF_FILE        #StartOfFile
+           | END_OF_FILE          #EndOfFile
+           | START_OF_LINE        #StartOfLine
+           | END_OF_LINE          #EndOfLine
+           | START_OF_WORD        #StartOfWord
+           | END_OF_WORD          #EndOfWord
+           | LINE                 #Line
+           | BEFORE_LINE          #BeforeLine
+           | AFTER_LINE           #AfterLine
+           | LINE_CURSOR          #LineCursor
+           | BEFORE_LINE_CURSOR   #BeforeLineCursor
+           | AFTER_LINE_CURSOR    #AfterLineCursor
+           | COLUMN               #Column
+           | BEFORE_COLUMN        #BeforeColumn
+           | AFTER_COLUMN         #AfterColumn
+           | COLUMN_CURSOR        #ColumnCursor
+           | BEFORE_COLUMN_CURSOR #BeforeColumnCursor
+           | AFTER_COLUMN_CURSOR  #AfterColumnCursor
            ;
 
 /**