diff --git a/src/edit.c b/src/edit.c
index 686c6d4..8dd6094 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -618,6 +618,11 @@
 	    c = hkmap(c);		// Hebrew mode mapping
 #endif
 
+	// If the window was made so small that nothing shows, make it at least
+	// one line and one column when typing.
+	if (KeyTyped && !KeyStuffed)
+	    win_ensure_size();
+
 	/*
 	 * Special handling of keys while the popup menu is visible or wanted
 	 * and the cursor is still in the completed word.  Only when there is
diff --git a/src/normal.c b/src/normal.c
index 0fbfe92..d3c4c78 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -608,6 +608,11 @@
 	old_mapped_len = 0;	// do go to Insert mode
     }
 
+    // If the window was made so small that nothing shows, make it at least one
+    // line and one column when typing a command.
+    if (KeyTyped && !KeyStuffed)
+	win_ensure_size();
+
 #ifdef FEAT_CMDL_INFO
     need_flushbuf = add_to_showcmd(c);
 #endif
diff --git a/src/proto/window.pro b/src/proto/window.pro
index 93264e1..740d310 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -55,6 +55,7 @@
 void win_size_save(garray_T *gap);
 void win_size_restore(garray_T *gap);
 int win_comp_pos(void);
+void win_ensure_size(void);
 void win_setheight(int height);
 void win_setheight_win(int height, win_T *win);
 void win_setwidth(int width);
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index af7c63a..68c44a0 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -1358,4 +1358,38 @@
   %bw!
 endfunc
 
+func Test_window_minimal_size()
+  set winminwidth=0 winminheight=0
+
+  " check size is fixed vertically
+  new
+  call win_execute(win_getid(2), 'wincmd _')
+  call assert_equal(0, winheight(0))
+  call feedkeys('0', 'tx')
+  call assert_equal(1, winheight(0))
+  bwipe!
+
+  " check size is fixed horizontally
+  vert new
+  call win_execute(win_getid(2), 'wincmd |')
+  call assert_equal(0, winwidth(0))
+  call feedkeys('0', 'tx')
+  call assert_equal(1, winwidth(0))
+  bwipe!
+
+  if has('timers')
+    " check size is fixed in Insert mode
+    new
+    call timer_start(100, {_ -> win_execute(win_getid(2), 'wincmd _')})
+    call timer_start(200, {_ -> assert_equal(0, winheight(0))})
+    call timer_start(300, {_ -> feedkeys(" \<Esc>", 't!')})
+    call feedkeys('a', 'tx!')
+    call assert_equal(1, winheight(0))
+    bwipe!
+  endif
+
+  set winminwidth& winminheight&
+endfunc
+
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index a14f9a7..06b9183 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3764,
+/**/
     3763,
 /**/
     3762,
diff --git a/src/window.c b/src/window.c
index 47fb815..b54813f 100644
--- a/src/window.c
+++ b/src/window.c
@@ -5518,6 +5518,18 @@
 }
 
 /*
+ * Make the current window show at least one line and one column.
+ */
+    void
+win_ensure_size()
+{
+    if (curwin->w_height == 0)
+	win_setheight(1);
+    if (curwin->w_width == 0)
+	win_setwidth(1);
+}
+
+/*
  * Set current window height and take care of repositioning other windows to
  * fit around it.
  */
