diff --git a/src/option.c b/src/option.c
index ea8c6af..aea5066 100644
--- a/src/option.c
+++ b/src/option.c
@@ -250,8 +250,9 @@
 # define PV_COLE	OPT_WIN(WV_COLE)
 #endif
 #ifdef FEAT_TERMINAL
-# define PV_TK		OPT_WIN(WV_TK)
-# define PV_TMS		OPT_WIN(WV_TMS)
+# define PV_TWK		OPT_WIN(WV_TWK)
+# define PV_TWS		OPT_WIN(WV_TWS)
+# define PV_TWSL	OPT_BUF(BV_TWSL)
 #endif
 #ifdef FEAT_SIGNS
 # define PV_SCL		OPT_WIN(WV_SCL)
@@ -373,6 +374,9 @@
 #ifdef FEAT_KEYMAP
 static char_u	*p_keymap;
 #endif
+#ifdef FEAT_TERMINAL
+static long	p_twsl;
+#endif
 
 /* Saved values for when 'bin' is set. */
 static int	p_et_nobin;
@@ -2750,27 +2754,57 @@
 			    {(char_u *)FALSE, (char_u *)FALSE}
 #endif
 			    SCRIPTID_INIT},
+    /* TODO: remove this deprecated entry */
     {"terminalscroll", "tlsl", P_NUM|P_VI_DEF|P_VIM|P_RBUF,
 #ifdef FEAT_TERMINAL
-			    (char_u *)&p_tlsl, PV_NONE,
+			    (char_u *)&p_twsl, PV_TWSL,
 			    {(char_u *)10000L, (char_u *)10000L}
 #else
 			    (char_u *)NULL, PV_NONE,
 			    {(char_u *)NULL, (char_u *)0L}
 #endif
 			    SCRIPTID_INIT},
-    {"termkey", "tk",	    P_STRING|P_ALLOCED|P_RWIN|P_VI_DEF,
+    /* TODO: remove this deprecated entry */
+    {"termkey",	    "tk",   P_STRING|P_ALLOCED|P_RWIN|P_VI_DEF,
 #ifdef FEAT_TERMINAL
-			    (char_u *)VAR_WIN, PV_TK,
+			    (char_u *)VAR_WIN, PV_TWK,
 			    {(char_u *)"", (char_u *)NULL}
 #else
 			    (char_u *)NULL, PV_NONE,
 			    {(char_u *)NULL, (char_u *)0L}
 #endif
 			    SCRIPTID_INIT},
+    /* TODO: remove this deprecated entry */
     {"termsize", "tms",	    P_STRING|P_ALLOCED|P_RWIN|P_VI_DEF,
 #ifdef FEAT_TERMINAL
-			    (char_u *)VAR_WIN, PV_TMS,
+			    (char_u *)VAR_WIN, PV_TWS,
+			    {(char_u *)"", (char_u *)NULL}
+#else
+			    (char_u *)NULL, PV_NONE,
+			    {(char_u *)NULL, (char_u *)0L}
+#endif
+			    SCRIPTID_INIT},
+    {"termwinkey", "twk",   P_STRING|P_ALLOCED|P_RWIN|P_VI_DEF,
+#ifdef FEAT_TERMINAL
+			    (char_u *)VAR_WIN, PV_TWK,
+			    {(char_u *)"", (char_u *)NULL}
+#else
+			    (char_u *)NULL, PV_NONE,
+			    {(char_u *)NULL, (char_u *)0L}
+#endif
+			    SCRIPTID_INIT},
+    {"termwinscroll", "twsl", P_NUM|P_VI_DEF|P_VIM|P_RBUF,
+#ifdef FEAT_TERMINAL
+			    (char_u *)&p_twsl, PV_TWSL,
+			    {(char_u *)10000L, (char_u *)10000L}
+#else
+			    (char_u *)NULL, PV_NONE,
+			    {(char_u *)NULL, (char_u *)0L}
+#endif
+			    SCRIPTID_INIT},
+    {"termwinsize", "tws",  P_STRING|P_ALLOCED|P_RWIN|P_VI_DEF,
+#ifdef FEAT_TERMINAL
+			    (char_u *)VAR_WIN, PV_TWS,
 			    {(char_u *)"", (char_u *)NULL}
 #else
 			    (char_u *)NULL, PV_NONE,
@@ -7452,19 +7486,20 @@
 #endif
 
 #ifdef FEAT_TERMINAL
-    /* 'termkey' */
-    else if (varp == &curwin->w_p_tk)
+    /* 'termwinkey' */
+    else if (varp == &curwin->w_p_twk)
     {
-	if (*curwin->w_p_tk != NUL && string_to_key(curwin->w_p_tk, TRUE) == 0)
+	if (*curwin->w_p_twk != NUL
+				  && string_to_key(curwin->w_p_twk, TRUE) == 0)
 	    errmsg = e_invarg;
     }
-    /* 'termsize' */
-    else if (varp == &curwin->w_p_tms)
+    /* 'termwinsize' */
+    else if (varp == &curwin->w_p_tws)
     {
-	if (*curwin->w_p_tms != NUL)
+	if (*curwin->w_p_tws != NUL)
 	{
-	    p = skipdigits(curwin->w_p_tms);
-	    if (p == curwin->w_p_tms
+	    p = skipdigits(curwin->w_p_tws);
+	    if (p == curwin->w_p_tws
 		    || (*p != 'x' && *p != '*')
 		    || *skipdigits(p + 1) != NUL)
 		errmsg = e_invarg;
@@ -10687,8 +10722,9 @@
 	case PV_COLE:   return (char_u *)&(curwin->w_p_cole);
 #endif
 #ifdef FEAT_TERMINAL
-	case PV_TK:     return (char_u *)&(curwin->w_p_tk);
-	case PV_TMS:    return (char_u *)&(curwin->w_p_tms);
+	case PV_TWK:    return (char_u *)&(curwin->w_p_twk);
+	case PV_TWS:    return (char_u *)&(curwin->w_p_tws);
+	case PV_TWSL:	return (char_u *)&(curbuf->b_p_twsl);
 #endif
 
 	case PV_AI:	return (char_u *)&(curbuf->b_p_ai);
@@ -10887,8 +10923,8 @@
     to->wo_cole = from->wo_cole;
 #endif
 #ifdef FEAT_TERMINAL
-    to->wo_tk = vim_strsave(from->wo_tk);
-    to->wo_tms = vim_strsave(from->wo_tms);
+    to->wo_twk = vim_strsave(from->wo_twk);
+    to->wo_tws = vim_strsave(from->wo_tws);
 #endif
 #ifdef FEAT_FOLDING
     to->wo_fdc = from->wo_fdc;
@@ -10957,8 +10993,8 @@
     check_string_option(&wop->wo_cocu);
 #endif
 #ifdef FEAT_TERMINAL
-    check_string_option(&wop->wo_tk);
-    check_string_option(&wop->wo_tms);
+    check_string_option(&wop->wo_twk);
+    check_string_option(&wop->wo_tws);
 #endif
 #ifdef FEAT_LINEBREAK
     check_string_option(&wop->wo_briopt);
@@ -11000,8 +11036,8 @@
     clear_string_option(&wop->wo_cocu);
 #endif
 #ifdef FEAT_TERMINAL
-    clear_string_option(&wop->wo_tk);
-    clear_string_option(&wop->wo_tms);
+    clear_string_option(&wop->wo_twk);
+    clear_string_option(&wop->wo_tws);
 #endif
 }
 
@@ -11178,6 +11214,9 @@
 	    buf->b_p_keymap = vim_strsave(p_keymap);
 	    buf->b_kmap_state |= KEYMAP_INIT;
 #endif
+#ifdef FEAT_TERMINAL
+	    buf->b_p_twsl = p_twsl;
+#endif
 	    /* This isn't really an option, but copying the langmap and IME
 	     * state from the current buffer is better than resetting it. */
 	    buf->b_p_iminsert = p_iminsert;
diff --git a/src/option.h b/src/option.h
index 45f1a36..8f492c3 100644
--- a/src/option.h
+++ b/src/option.h
@@ -1114,6 +1114,9 @@
     , BV_UDF
     , BV_UL
     , BV_WM
+#ifdef FEAT_TERMINAL
+    , BV_TWSL
+#endif
     , BV_COUNT	    /* must be the last one */
 };
 
@@ -1133,8 +1136,8 @@
     , WV_COLE
 #endif
 #ifdef FEAT_TERMINAL
-    , WV_TK
-    , WV_TMS
+    , WV_TWK
+    , WV_TWS
 #endif
     , WV_CRBIND
 #ifdef FEAT_LINEBREAK
diff --git a/src/terminal.c b/src/terminal.c
index 7f6e48d..432aa35 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -42,6 +42,8 @@
  *   redirection.  Probably in call to channel_set_pipes().
  * - Win32: Redirecting output does not work, Test_terminal_redir_file()
  *   is disabled.
+ * - Add test for 'termwinkey'.
+ * - libvterm: bringg back using // comments and trailing comma in enum
  * - When starting terminal window with shell in terminal, then using :gui to
  *   switch to GUI, shell stops working. Scrollback seems wrong, command
  *   running in shell is still running.
@@ -215,17 +217,17 @@
     *rows = 0;
     *cols = 0;
 
-    if (*wp->w_p_tms != NUL)
+    if (*wp->w_p_tws != NUL)
     {
-	char_u *p = vim_strchr(wp->w_p_tms, 'x');
+	char_u *p = vim_strchr(wp->w_p_tws, 'x');
 
 	/* Syntax of value was already checked when it's set. */
 	if (p == NULL)
 	{
 	    minsize = TRUE;
-	    p = vim_strchr(wp->w_p_tms, '*');
+	    p = vim_strchr(wp->w_p_tws, '*');
 	}
-	*rows = atoi((char *)wp->w_p_tms);
+	*rows = atoi((char *)wp->w_p_tws);
 	*cols = atoi((char *)p + 1);
     }
     return minsize;
@@ -2000,8 +2002,8 @@
      * stored reference. */
     in_terminal_loop = curbuf->b_term;
 
-    if (*curwin->w_p_tk != NUL)
-	termkey = string_to_key(curwin->w_p_tk, TRUE);
+    if (*curwin->w_p_twk != NUL)
+	termkey = string_to_key(curwin->w_p_twk, TRUE);
     position_cursor(curwin, &curbuf->b_term->tl_cursor_pos);
     may_set_cursor_props(curbuf->b_term);
 
@@ -2562,9 +2564,9 @@
 
     /* If the number of lines that are stored goes over 'termscrollback' then
      * delete the first 10%. */
-    if (term->tl_scrollback.ga_len >= p_tlsl)
+    if (term->tl_scrollback.ga_len >= term->tl_buffer->b_p_twsl)
     {
-	int	todo = p_tlsl / 10;
+	int	todo = term->tl_buffer->b_p_twsl / 10;
 	int	i;
 
 	curbuf = term->tl_buffer;
diff --git a/src/testdir/gen_opt_test.vim b/src/testdir/gen_opt_test.vim
index e781a0d..58db1f9 100644
--- a/src/testdir/gen_opt_test.vim
+++ b/src/testdir/gen_opt_test.vim
@@ -130,8 +130,9 @@
       \ 'tagcase': [['smart', 'match'], ['', 'xxx', 'smart,match']],
       \ 'term': [[], []],
       \ 'termguicolors': [[], []],
-      \ 'termsize': [['', '24x80', '0x80', '32x0', '0x0'], ['xxx', '80', '8ax9', '24x80b']],
       \ 'termencoding': [has('gui_gtk') ? [] : ['', 'utf-8'], ['xxx']],
+      \ 'termsize': [['', '24x80', '0x80', '32x0', '0x0'], ['xxx', '80', '8ax9', '24x80b']],
+      \ 'termwinsize': [['', '24x80', '0x80', '32x0', '0x0'], ['xxx', '80', '8ax9', '24x80b']],
       \ 'toolbar': [['', 'icons', 'text'], ['xxx']],
       \ 'toolbariconsize': [['', 'tiny', 'huge'], ['xxx']],
       \ 'ttymouse': [['', 'xterm'], ['xxx']],
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 5137659..158bb98 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -273,7 +273,7 @@
 
 func Test_terminal_scrollback()
   let buf = Run_shell_in_terminal({})
-  set terminalscroll=100
+  set termwinscroll=100
   call writefile(range(150), 'Xtext')
   if has('win32')
     call term_sendkeys(buf, "type Xtext\<CR>")
@@ -289,7 +289,7 @@
   call Stop_shell_in_terminal(buf)
   call term_wait(buf)
   exe buf . 'bwipe'
-  set terminalscroll&
+  set termwinscroll&
 endfunc
 
 func Test_terminal_size()
@@ -1381,11 +1381,11 @@
   exe buf . 'bwipe'
 endfunc
 
-func Test_terminal_termsize_option_fixed()
+func Test_terminal_termwinsize_option_fixed()
   if !CanRunVimInTerminal()
     return
   endif
-  set termsize=6x40
+  set termwinsize=6x40
   let text = []
   for n in range(10)
     call add(text, repeat(n, 50))
@@ -1407,15 +1407,15 @@
   call StopVimInTerminal(buf)
   call delete('Xwinsize')
 
-  call assert_fails('set termsize=40', 'E474')
-  call assert_fails('set termsize=10+40', 'E474')
-  call assert_fails('set termsize=abc', 'E474')
+  call assert_fails('set termwinsize=40', 'E474')
+  call assert_fails('set termwinsize=10+40', 'E474')
+  call assert_fails('set termwinsize=abc', 'E474')
 
-  set termsize=
+  set termwinsize=
 endfunc
 
-func Test_terminal_termsize_option_zero()
-  set termsize=0x0
+func Test_terminal_termwinsize_option_zero()
+  set termwinsize=0x0
   let buf = Run_shell_in_terminal({})
   let win = bufwinid(buf)
   call assert_equal([winheight(win), winwidth(win)], term_getsize(buf))
@@ -1423,7 +1423,7 @@
   call term_wait(buf)
   exe buf . 'bwipe'
 
-  set termsize=7x0
+  set termwinsize=7x0
   let buf = Run_shell_in_terminal({})
   let win = bufwinid(buf)
   call assert_equal([7, winwidth(win)], term_getsize(buf))
@@ -1431,7 +1431,7 @@
   call term_wait(buf)
   exe buf . 'bwipe'
 
-  set termsize=0x33
+  set termwinsize=0x33
   let buf = Run_shell_in_terminal({})
   let win = bufwinid(buf)
   call assert_equal([winheight(win), 33], term_getsize(buf))
@@ -1439,11 +1439,11 @@
   call term_wait(buf)
   exe buf . 'bwipe'
 
-  set termsize=
+  set termwinsize=
 endfunc
 
-func Test_terminal_termsize_mininmum()
-  set termsize=10*50
+func Test_terminal_termwinsize_mininmum()
+  set termwinsize=10*50
   vsplit
   let buf = Run_shell_in_terminal({})
   let win = bufwinid(buf)
@@ -1469,7 +1469,7 @@
   call term_wait(buf)
   exe buf . 'bwipe'
 
-  set termsize=0*0
+  set termwinsize=0*0
   let buf = Run_shell_in_terminal({})
   let win = bufwinid(buf)
   call assert_equal([winheight(win), winwidth(win)], term_getsize(buf))
@@ -1477,5 +1477,5 @@
   call term_wait(buf)
   exe buf . 'bwipe'
 
-  set termsize=
+  set termwinsize=
 endfunc
diff --git a/src/version.c b/src/version.c
index 53aba0d..52486ac 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1743,
+/**/
     1742,
 /**/
     1741,
