diff --git a/src/channel.c b/src/channel.c
index 22d9083..70ee2f3 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -4434,6 +4434,28 @@
 		opt->jo_set2 |= JO2_TERM_FINISH;
 		opt->jo_term_finish = *val;
 	    }
+	    else if (STRCMP(hi->hi_key, "term_opencmd") == 0)
+	    {
+		char_u *p;
+
+		if (!(supported2 & JO2_TERM_OPENCMD))
+		    break;
+		opt->jo_set2 |= JO2_TERM_OPENCMD;
+		p = opt->jo_term_opencmd = get_tv_string_chk(item);
+		if (p != NULL)
+		{
+		    /* Must have %d and no other %. */
+		    p = vim_strchr(p, '%');
+		    if (p != NULL && (p[1] != 'd'
+					    || vim_strchr(p + 2, '%') != NULL))
+			p = NULL;
+		}
+		if (p == NULL)
+		{
+		    EMSG2(_(e_invarg2), "term_opencmd");
+		    return FAIL;
+		}
+	    }
 	    else if (STRCMP(hi->hi_key, "term_rows") == 0)
 	    {
 		if (!(supported2 & JO2_TERM_ROWS))
diff --git a/src/structs.h b/src/structs.h
index 767b0f4..91326f6 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1693,7 +1693,8 @@
 #define JO2_VERTICAL	    0x0100	/* "vertical" */
 #define JO2_CURWIN	    0x0200	/* "curwin" */
 #define JO2_HIDDEN	    0x0400	/* "hidden" */
-#define JO2_ALL		    0x07FF
+#define JO2_TERM_OPENCMD    0x0800	/* "term_opencmd" */
+#define JO2_ALL		    0x0FFF
 
 #define JO_MODE_ALL	(JO_MODE + JO_IN_MODE + JO_OUT_MODE + JO_ERR_MODE)
 #define JO_CB_ALL \
@@ -1757,6 +1758,7 @@
     int		jo_curwin;
     int		jo_hidden;
     char_u	*jo_term_name;
+    char_u	*jo_term_opencmd;
     int		jo_term_finish;
 #endif
 } jobopt_T;
diff --git a/src/terminal.c b/src/terminal.c
index 63e1cec..0b4c2ef 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -36,8 +36,6 @@
  * that buffer, attributes come from the scrollback buffer tl_scrollback.
  *
  * TODO:
- * - When using term_finish "open" have a way to specify how the window is to
- *   be opened.  E.g. term_opencmd "10split buffer %d".
  * - support different cursor shapes, colors and attributes
  * - make term_getcursor() return type (none/block/bar/underline) and
  *   attributes (color, blink, etc.)
@@ -119,6 +117,7 @@
     int		tl_normal_mode; /* TRUE: Terminal-Normal mode */
     int		tl_channel_closed;
     int		tl_finish;	/* 'c' for ++close, 'o' for ++open */
+    char_u	*tl_opencmd;
 
 #ifdef WIN3264
     void	*tl_winpty_config;
@@ -365,6 +364,9 @@
     }
     curbuf->b_fname = curbuf->b_ffname;
 
+    if (opt->jo_term_opencmd != NULL)
+	term->tl_opencmd = vim_strsave(opt->jo_term_opencmd);
+
     set_string_option_direct((char_u *)"buftype", -1,
 				  (char_u *)"terminal", OPT_FREE|OPT_LOCAL, 0);
 
@@ -514,6 +516,7 @@
     term_free_vterm(term);
     vim_free(term->tl_title);
     vim_free(term->tl_status_text);
+    vim_free(term->tl_opencmd);
     vim_free(term);
     buf->b_term = NULL;
 }
@@ -1539,7 +1542,9 @@
 
 		    /* TODO: use term_opencmd */
 		    ch_log(NULL, "terminal job finished, opening window");
-		    vim_snprintf(buf, sizeof(buf), "botright sbuf %d", fnum);
+		    vim_snprintf(buf, sizeof(buf),
+			    term->tl_opencmd == NULL
+				? "botright sbuf %d" : term->tl_opencmd, fnum);
 		    do_cmdline_cmd((char_u *)buf);
 		}
 		else
@@ -2434,7 +2439,7 @@
 	    && get_job_options(&argvars[1], &opt,
 		JO_TIMEOUT_ALL + JO_STOPONEXIT
 		    + JO_EXIT_CB + JO_CLOSE_CALLBACK,
-		JO2_TERM_NAME + JO2_TERM_FINISH + JO2_HIDDEN
+		JO2_TERM_NAME + JO2_TERM_FINISH + JO2_HIDDEN + JO2_TERM_OPENCMD
 		    + JO2_TERM_COLS + JO2_TERM_ROWS + JO2_VERTICAL + JO2_CURWIN
 		    + JO2_CWD + JO2_ENV) == FAIL)
 	return;
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 97c13ef..4de853a 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -320,7 +320,7 @@
 
 endfunc
 
-func Test_finish_close()
+func Test_finish_open_close()
   call assert_equal(1, winnr('$'))
 
   if s:python != ''
@@ -371,6 +371,19 @@
   call WaitFor("winnr('$') == 2", waittime)
   call assert_equal(2, winnr('$'))
   bwipe
+
+  call assert_fails("call term_start(cmd, {'term_opencmd': 'open'})", 'E475:')
+  call assert_fails("call term_start(cmd, {'term_opencmd': 'split %x'})", 'E475:')
+  call assert_fails("call term_start(cmd, {'term_opencmd': 'split %d and %s'})", 'E475:')
+  call assert_fails("call term_start(cmd, {'term_opencmd': 'split % and %d'})", 'E475:')
+
+  call term_start(cmd, {'term_finish': 'open', 'term_opencmd': '4split | buffer %d'})
+  close
+  call WaitFor("winnr('$') == 2", waittime)
+  call assert_equal(2, winnr('$'))
+  call assert_equal(4, winheight(0))
+  bwipe
+
 endfunc
 
 func Test_terminal_cwd()
diff --git a/src/version.c b/src/version.c
index 306aeb4..8ca7d70 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    916,
+/**/
     915,
 /**/
     914,
