diff --git a/src/register.c b/src/register.c
index a7e1377..ccf9b64 100644
--- a/src/register.c
+++ b/src/register.c
@@ -2161,16 +2161,23 @@
     int		attr;
     char_u	*arg = eap->arg;
     int		clen;
+    char_u      type[2];
 
     if (arg != NULL && *arg == NUL)
 	arg = NULL;
     attr = HL_ATTR(HLF_8);
 
     // Highlight title
-    msg_puts_title(_("\n--- Registers ---"));
+    msg_puts_title(_("\nType Name Content"));
     for (i = -1; i < NUM_REGISTERS && !got_int; ++i)
     {
 	name = get_register_name(i);
+	switch (get_reg_type(name, NULL))
+	{
+	    case MLINE: type[0] = 'l'; break;
+	    case MCHAR: type[0] = 'c'; break;
+	    default:	type[0] = 'b'; break;
+	}
 	if (arg != NULL && vim_strchr(arg, name) == NULL
 #ifdef ONE_CLIPBOARD
 	    // Star register and plus register contain the same thing.
@@ -2207,11 +2214,14 @@
 	if (yb->y_array != NULL)
 	{
 	    msg_putchar('\n');
+	    msg_puts("  ");
+	    msg_putchar(type[0]);
+	    msg_puts("  ");
 	    msg_putchar('"');
 	    msg_putchar(name);
 	    msg_puts("   ");
 
-	    n = (int)Columns - 6;
+	    n = (int)Columns - 11;
 	    for (j = 0; j < yb->y_size && n > 1; ++j)
 	    {
 		if (j)
@@ -2237,7 +2247,7 @@
     if ((p = get_last_insert()) != NULL
 		 && (arg == NULL || vim_strchr(arg, '.') != NULL) && !got_int)
     {
-	msg_puts("\n\".   ");
+	msg_puts("\n  c  \".   ");
 	dis_msg(p, TRUE);
     }
 
@@ -2245,7 +2255,7 @@
     if (last_cmdline != NULL && (arg == NULL || vim_strchr(arg, ':') != NULL)
 								  && !got_int)
     {
-	msg_puts("\n\":   ");
+	msg_puts("\n  c  \":   ");
 	dis_msg(last_cmdline, FALSE);
     }
 
@@ -2253,7 +2263,7 @@
     if (curbuf->b_fname != NULL
 	    && (arg == NULL || vim_strchr(arg, '%') != NULL) && !got_int)
     {
-	msg_puts("\n\"%   ");
+	msg_puts("\n  c  \"%   ");
 	dis_msg(curbuf->b_fname, FALSE);
     }
 
@@ -2265,7 +2275,7 @@
 
 	if (buflist_name_nr(0, &fname, &dummy) != FAIL)
 	{
-	    msg_puts("\n\"#   ");
+	    msg_puts("\n  c  \"#   ");
 	    dis_msg(fname, FALSE);
 	}
     }
@@ -2274,7 +2284,7 @@
     if (last_search_pat() != NULL
 		 && (arg == NULL || vim_strchr(arg, '/') != NULL) && !got_int)
     {
-	msg_puts("\n\"/   ");
+	msg_puts("\n  c  \"/   ");
 	dis_msg(last_search_pat(), FALSE);
     }
 
@@ -2283,7 +2293,7 @@
     if (expr_line != NULL && (arg == NULL || vim_strchr(arg, '=') != NULL)
 								  && !got_int)
     {
-	msg_puts("\n\"=   ");
+	msg_puts("\n  c  \"=   ");
 	dis_msg(expr_line, FALSE);
     }
 #endif
@@ -2515,7 +2525,6 @@
 #endif
 
 
-#if defined(FEAT_EVAL) || defined(PROTO)
 /*
  * Return the type of a register.
  * Used for getregtype()
@@ -2560,6 +2569,7 @@
     return MAUTO;
 }
 
+#if defined(FEAT_EVAL) || defined(PROTO)
 /*
  * When "flags" has GREG_LIST return a list with text "s".
  * Otherwise just return "s".
diff --git a/src/testdir/test_registers.vim b/src/testdir/test_registers.vim
index 3f4942e..d9cf7ed 100644
--- a/src/testdir/test_registers.vim
+++ b/src/testdir/test_registers.vim
@@ -39,26 +39,26 @@
     let b = execute('registers')
 
     call assert_equal(a, b)
-    call assert_match('^\n--- Registers ---\n'
-          \ .         '""   a\n'
-          \ .         '"0   ba\n'
-          \ .         '"a   b\n'
+    call assert_match('^\nType Name Content\n'
+          \ .         '  c  ""   a\n'
+          \ .         '  c  "0   ba\n'
+          \ .         '  c  "a   b\n'
           \ .         '.*'
-          \ .         '"-   a\n'
+          \ .         '  c  "-   a\n'
           \ .         '.*'
-          \ .         '":   ls\n'
-          \ .         '"%   file2\n'
-          \ .         '"#   file1\n'
-          \ .         '"/   bar\n'
-          \ .         '"=   2\*4', a)
+          \ .         '  c  ":   ls\n'
+          \ .         '  c  "%   file2\n'
+          \ .         '  c  "#   file1\n'
+          \ .         '  c  "/   bar\n'
+          \ .         '  c  "=   2\*4', a)
 
     let a = execute('registers a')
-    call assert_match('^\n--- Registers ---\n'
-          \ .         '"a   b', a)
+    call assert_match('^\nType Name Content\n'
+          \ .         '  c  "a   b', a)
 
     let a = execute('registers :')
-    call assert_match('^\n--- Registers ---\n'
-          \ .         '":   ls', a)
+    call assert_match('^\nType Name Content\n'
+          \ .         '  c  ":   ls', a)
 
     bwipe!
 endfunc
diff --git a/src/version.c b/src/version.c
index 45c7bc0..c5e925e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2212,
+/**/
     2211,
 /**/
     2210,
