diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 91d56d7..dc9ea16 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -889,7 +889,8 @@
 #else
 		    0
 #endif
-		    , TRUE)) == NULL)
+		    , in_vim9script() ? GETLINE_CONCAT_CONTBAR
+					       : GETLINE_CONCAT_CONT)) == NULL)
 	    {
 		// Don't call wait_return for aborted command line.  The NULL
 		// returned for the end of a sourced file or executed function
diff --git a/src/scriptfile.c b/src/scriptfile.c
index eceefd7..adc5caf 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1741,8 +1741,8 @@
     char_u		*p;
     int			do_vim9_all = in_vim9script()
 					      && options == GETLINE_CONCAT_ALL;
-    int			do_vim9_cont = do_vim9_all
-					 || options == GETLINE_CONCAT_CONTDEF;
+    int			do_bar_cont = do_vim9_all
+					 || options == GETLINE_CONCAT_CONTBAR;
 
 #ifdef FEAT_EVAL
     // If breakpoints have been added/deleted need to check for it.
@@ -1797,7 +1797,7 @@
 			      || (p[0] == '"' && p[1] == '\\' && p[2] == ' ')
 			      || (do_vim9_all && (*p == NUL
 						     || vim9_comment_start(p)))
-			      || (do_vim9_cont && p[0] == '|' && p[1] != '|')))
+			      || (do_bar_cont && p[0] == '|' && p[1] != '|')))
 	{
 	    garray_T    ga;
 
@@ -1817,7 +1817,7 @@
 		if (sp->nextline == NULL)
 		    break;
 		p = skipwhite(sp->nextline);
-		if (*p == '\\' || (do_vim9_cont && p[0] == '|' && p[1] != '|'))
+		if (*p == '\\' || (do_bar_cont && p[0] == '|' && p[1] != '|'))
 		{
 		    // Adjust the growsize to the current length to speed up
 		    // concatenating many lines.
diff --git a/src/structs.h b/src/structs.h
index ba42e33..102be0e 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1565,8 +1565,8 @@
 // type of getline() last argument
 typedef enum {
     GETLINE_NONE,	    // do not concatenate any lines
-    GETLINE_CONCAT_CONT,    // concatenate continuation lines in Vim9 script
-    GETLINE_CONCAT_CONTDEF, // concatenate continuation lines always
+    GETLINE_CONCAT_CONT,    // concatenate continuation lines with backslash
+    GETLINE_CONCAT_CONTBAR, // concatenate continuation lines with \ and |
     GETLINE_CONCAT_ALL	    // concatenate continuation and Vim9 # comment lines
 } getline_opt_T;
 
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 710af41..ed0c7dd 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -536,6 +536,37 @@
   quit!
 enddef
 
+def Test_bar_line_continuation()
+  var lines =<< trim END
+      au BufNewFile Xfile g:readFile = 1
+          | g:readExtra = 2
+      g:readFile = 0
+      g:readExtra = 0
+      edit Xfile
+      assert_equal(1, g:readFile)
+      assert_equal(2, g:readExtra)
+      bwipe!
+      au! BufNewFile
+
+      au BufNewFile Xfile g:readFile = 1
+          | g:readExtra = 2
+          | g:readMore = 3
+      g:readFile = 0
+      g:readExtra = 0
+      g:readMore = 0
+      edit Xfile
+      assert_equal(1, g:readFile)
+      assert_equal(2, g:readExtra)
+      assert_equal(3, g:readMore)
+      bwipe!
+      au! BufNewFile
+      unlet g:readFile
+      unlet g:readExtra
+      unlet g:readMore
+  END
+  CheckDefAndScriptSuccess(lines)
+enddef
+
 def Test_command_modifier_other()
   new Xsomefile
   setline(1, 'changed')
@@ -548,33 +579,15 @@
   bwipe!
 
   au BufNewFile Xfile g:readFile = 1
-      | g:readExtra = 2
   g:readFile = 0
-  g:readExtra = 0
   edit Xfile
   assert_equal(1, g:readFile)
-  assert_equal(2, g:readExtra)
   bwipe!
   g:readFile = 0
   noautocmd edit Xfile
   assert_equal(0, g:readFile)
   au! BufNewFile
-
-  au BufNewFile Xfile g:readFile = 1
-      | g:readExtra = 2
-      | g:readMore = 3
-  g:readFile = 0
-  g:readExtra = 0
-  g:readMore = 0
-  edit Xfile
-  assert_equal(1, g:readFile)
-  assert_equal(2, g:readExtra)
-  assert_equal(3, g:readMore)
-  bwipe!
-  au! BufNewFile
   unlet g:readFile
-  unlet g:readExtra
-  unlet g:readMore
 
   noswapfile edit XnoSwap
   assert_equal(0, &l:swapfile)
diff --git a/src/userfunc.c b/src/userfunc.c
index 85941d1..9393b62 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3292,7 +3292,7 @@
     nesting = 0;
     nesting_def[nesting] = (eap->cmdidx == CMD_def);
     getline_options = eap->cmdidx == CMD_def
-				? GETLINE_CONCAT_CONTDEF : GETLINE_CONCAT_CONT;
+				? GETLINE_CONCAT_CONTBAR : GETLINE_CONCAT_CONT;
     for (;;)
     {
 	if (KeyTyped)
@@ -3368,7 +3368,7 @@
 		    VIM_CLEAR(skip_until);
 		    VIM_CLEAR(heredoc_trimmed);
 		    getline_options = eap->cmdidx == CMD_def
-				? GETLINE_CONCAT_CONTDEF : GETLINE_CONCAT_CONT;
+				? GETLINE_CONCAT_CONTBAR : GETLINE_CONCAT_CONT;
 		    is_heredoc = FALSE;
 		}
 	    }
diff --git a/src/version.c b/src/version.c
index e9327f1..ee0d987 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2242,
+/**/
     2241,
 /**/
     2240,
