diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index d29a932..4eee8fe 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3425,12 +3425,26 @@
     {
 	char_u *pskip = skip_option_env_lead(eap->cmd);
 
-	if (vim_strchr((char_u *)"{('[\"@", *p) != NULL
+	if (vim_strchr((char_u *)"{('[\"@&", *p) != NULL
 	       || ((p = to_name_const_end(pskip)) > eap->cmd && *p != NUL))
 	{
 	    int	    oplen;
 	    int	    heredoc;
-	    char_u  *swp = skipwhite(p);
+	    char_u  *swp;
+
+	    if (*eap->cmd == '&')
+	    {
+		p = to_name_end(eap->cmd + 1, FALSE);
+		if (ends_excmd(*skipwhite(p)))
+		{
+		    // "&option <NL>" is the start of an expression.
+		    eap->cmdidx = CMD_eval;
+		    return eap->cmd;
+		}
+		// "&option" can be followed by "->" or "=", check below
+	    }
+
+	    swp = skipwhite(p);
 
 	    if (
 		// "(..." is an expression.
@@ -3530,10 +3544,14 @@
 
 	    // Recognize an assignment if we recognize the variable name:
 	    // "g:var = expr"
+	    // "@r = expr"
+	    // "&opt = expr"
 	    // "var = expr"  where "var" is a variable name or we are skipping
 	    // (variable declaration might have been skipped).
 	    if (*eap->cmd == '@')
 		p = eap->cmd + 2;
+	    else if (*eap->cmd == '&')
+		p = skiptowhite_esc(eap->cmd + 1);
 	    oplen = assignment_len(skipwhite(p), &heredoc);
 	    if (oplen > 0)
 	    {
diff --git a/src/proto/vim9compile.pro b/src/proto/vim9compile.pro
index 81da2a5..2b62b6c 100644
--- a/src/proto/vim9compile.pro
+++ b/src/proto/vim9compile.pro
@@ -8,6 +8,7 @@
 imported_T *find_imported_in_script(char_u *name, size_t len, int sid);
 char_u *peek_next_line_from_context(cctx_T *cctx);
 char_u *next_line_from_context(cctx_T *cctx, int skip_comment);
+char_u *to_name_end(char_u *arg, int use_namespace);
 char_u *to_name_const_end(char_u *arg);
 int get_lambda_tv_and_compile(char_u **arg, typval_T *rettv, int types_optional, evalarg_T *evalarg);
 exprtype_T get_compare_type(char_u *p, int *len, int *type_is);
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index a9e95ff..4b3cbc6 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -521,6 +521,22 @@
   CheckScriptSuccess(lines)
 enddef
 
+def Test_option_use_linebreak()
+  var lines =<< trim END
+      new
+      &matchpairs = '(:)'
+      &matchpairs->setline(1)
+      &matchpairs = '[:]'
+      &matchpairs   ->setline(2)
+      &matchpairs = '{:}'
+      &matchpairs  
+          ->setline(3)
+      assert_equal(['(:)', '[:]', '{:}'], getline(1, '$'))
+      bwipe!
+  END
+  CheckDefAndScriptSuccess(lines)
+enddef
+
 def Test_skipped_expr_linebreak()
   if 0
     var x = []
diff --git a/src/version.c b/src/version.c
index 146eb8a..1130e6f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3365,
+/**/
     3364,
 /**/
     3363,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index ee63b32..17aba4a 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -3579,7 +3579,7 @@
  * Return a pointer to just after the name.  Equal to "arg" if there is no
  * valid name.
  */
-    static char_u *
+    char_u *
 to_name_end(char_u *arg, int use_namespace)
 {
     char_u	*p;
