diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 9b8155c..eda0d6c 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -999,9 +999,13 @@
 			delete and yank) ({.%#:} only work with put).
 
 							*:reg* *:registers*
-:reg[isters]		Display the contents of all numbered and named
-			registers.  If a register is written to for |:redir|
-			it will not be listed.
+:reg[isters]		Display the type and contents of all numbered and
+			named registers.  If a register is written to for
+			|:redir| it will not be listed.
+			Type can be one of:
+			"c"	for |characterwise| text
+			"l"	for |linewise| text
+			"b"	for |blockwise-visual| text
 
 
 :reg[isters] {arg}	Display the contents of the numbered and named
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,
