diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 75bb7fb..30f5221 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -1365,7 +1365,7 @@
 	EX_NEEDARG|EX_EXTRA|EX_BANG|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK,
 	ADDR_NONE),
 EXCMD(CMD_sleep,	"sleep",	ex_sleep,
-	EX_RANGE|EX_COUNT|EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
+	EX_BANG|EX_RANGE|EX_COUNT|EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK,
 	ADDR_OTHER),
 EXCMD(CMD_slast,	"slast",	ex_last,
 	EX_EXTRA|EX_BANG|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 7fe33d8..9562e6b 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7225,14 +7225,17 @@
 	case NUL: len *= 1000L; break;
 	default: semsg(_(e_invarg2), eap->arg); return;
     }
-    do_sleep(len);
+
+    // Hide the cursor if invoked with !
+    do_sleep(len, eap->forceit);
 }
 
 /*
  * Sleep for "msec" milliseconds, but keep checking for a CTRL-C every second.
+ * Hide the cursor if "hide_cursor" is TRUE.
  */
     void
-do_sleep(long msec)
+do_sleep(long msec, int hide_cursor)
 {
     long	done = 0;
     long	wait_now;
@@ -7244,7 +7247,11 @@
     ELAPSED_INIT(start_tv);
 # endif
 
-    cursor_on();
+    if (hide_cursor)
+        cursor_off();
+    else
+        cursor_on();
+
     out_flush_cursor(FALSE, FALSE);
     while (!got_int && done < msec)
     {
diff --git a/src/normal.c b/src/normal.c
index faf6ffb..a5f5794 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -993,7 +993,7 @@
 		// something different from CTRL-N.  Can't be avoided.
 		while ((c = vpeekc()) <= 0 && towait > 0L)
 		{
-		    do_sleep(towait > 50L ? 50L : towait);
+		    do_sleep(towait > 50L ? 50L : towait, FALSE);
 		    towait -= 50L;
 		}
 		if (c > 0)
@@ -6230,7 +6230,7 @@
      * "gs": Goto sleep.
      */
     case 's':
-	do_sleep(cap->count1 * 1000L);
+	do_sleep(cap->count1 * 1000L, FALSE);
 	break;
 
     /*
diff --git a/src/proto/ex_docmd.pro b/src/proto/ex_docmd.pro
index 46030a5..94770f2 100644
--- a/src/proto/ex_docmd.pro
+++ b/src/proto/ex_docmd.pro
@@ -42,7 +42,7 @@
 void post_chdir(cdscope_T scope);
 int changedir_func(char_u *new_dir, int forceit, cdscope_T scope);
 void ex_cd(exarg_T *eap);
-void do_sleep(long msec);
+void do_sleep(long msec, int hide_cursor);
 void ex_may_print(exarg_T *eap);
 void ex_redraw(exarg_T *eap);
 int vim_mkdir_emsg(char_u *name, int prot);
diff --git a/src/term.c b/src/term.c
index 5d1228d..47e5dfd 100644
--- a/src/term.c
+++ b/src/term.c
@@ -2713,7 +2713,7 @@
 		else
 		{
 		    ++p;
-		    do_sleep(duration);
+		    do_sleep(duration, FALSE);
 		}
 # else
 		// Rely on the terminal library to sleep.
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 364221f..b769499 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -246,6 +246,7 @@
 	test_shortpathname \
 	test_signals \
 	test_signs \
+	test_sleep \
 	test_smartindent \
 	test_sort \
 	test_sound \
@@ -472,6 +473,7 @@
 	test_shortpathname.res \
 	test_signals.res \
 	test_signs.res \
+	test_sleep.res \
 	test_smartindent.res \
 	test_sort.res \
 	test_sound.res \
diff --git a/src/testdir/test_sleep.vim b/src/testdir/test_sleep.vim
new file mode 100644
index 0000000..f71855f
--- /dev/null
+++ b/src/testdir/test_sleep.vim
@@ -0,0 +1,26 @@
+" Test for sleep and sleep! commands
+
+func! s:get_time_ms()
+  let timestr = reltimestr(reltime())
+  let dotidx = stridx(timestr, '.')
+  let sec = str2nr(timestr[:dotidx])
+  let msec = str2nr(timestr[dotidx + 1:])
+  return (sec * 1000) + (msec / 1000)
+endfunc
+
+func! s:assert_takes_longer(cmd, time_ms)
+  let start = s:get_time_ms()
+  execute a:cmd
+  let end = s:get_time_ms()
+  call assert_true(end - start >=# a:time_ms)
+endfun
+
+func! Test_sleep_bang()
+  call s:assert_takes_longer('sleep 50m', 50)
+  call s:assert_takes_longer('sleep! 50m', 50)
+  call s:assert_takes_longer('sl 50m', 50)
+  call s:assert_takes_longer('sl! 50m', 50)
+  call s:assert_takes_longer('1sleep', 1000)
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index d001040..0367430 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2366,
+/**/
     2365,
 /**/
     2364,
