diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 36a8ad4..53e49d5 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -1307,16 +1307,16 @@
 	EX_EXTRA|EX_NOTRLCOM,
 	ADDR_NONE),
 EXCMD(CMD_set,		"set",		ex_set,
-	EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK,
+	EX_BANG|EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK,
 	ADDR_NONE),
 EXCMD(CMD_setfiletype,	"setfiletype",	ex_setfiletype,
 	EX_TRLBAR|EX_EXTRA|EX_NEEDARG|EX_CMDWIN,
 	ADDR_NONE),
 EXCMD(CMD_setglobal,	"setglobal",	ex_set,
-	EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK,
+	EX_BANG|EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK,
 	ADDR_NONE),
 EXCMD(CMD_setlocal,	"setlocal",	ex_set,
-	EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK,
+	EX_BANG|EX_TRLBAR|EX_EXTRA|EX_CMDWIN|EX_SBOXOK,
 	ADDR_NONE),
 EXCMD(CMD_sfind,	"sfind",	ex_splitview,
 	EX_BANG|EX_FILE1|EX_RANGE|EX_CMDARG|EX_ARGOPT|EX_TRLBAR,
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 51d85c3..193cfcf 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -320,7 +320,6 @@
 # define ex_diffupdate		ex_ni
 #endif
 static void	ex_digraphs(exarg_T *eap);
-static void	ex_set(exarg_T *eap);
 #ifdef FEAT_SEARCH_EXTRA
 static void	ex_nohlsearch(exarg_T *eap);
 #else
@@ -8488,23 +8487,6 @@
 #endif
 }
 
-    static void
-ex_set(exarg_T *eap)
-{
-    int		flags = 0;
-
-    if (eap->cmdidx == CMD_setlocal)
-	flags = OPT_LOCAL;
-    else if (eap->cmdidx == CMD_setglobal)
-	flags = OPT_GLOBAL;
-#if defined(FEAT_EVAL) && defined(FEAT_BROWSE)
-    if (cmdmod.browse && flags == 0)
-	ex_options(eap);
-    else
-#endif
-	(void)do_set(eap->arg, flags);
-}
-
 #if defined(FEAT_SEARCH_EXTRA) || defined(PROTO)
     void
 set_no_hlsearch(int flag)
diff --git a/src/option.c b/src/option.c
index 7c37326..e24181a 100644
--- a/src/option.c
+++ b/src/option.c
@@ -1066,6 +1066,27 @@
 }
 #endif
 
+    void
+ex_set(exarg_T *eap)
+{
+    int		flags = 0;
+
+    if (eap->cmdidx == CMD_setlocal)
+	flags = OPT_LOCAL;
+    else if (eap->cmdidx == CMD_setglobal)
+	flags = OPT_GLOBAL;
+#if defined(FEAT_EVAL) && defined(FEAT_BROWSE)
+    if (cmdmod.browse && flags == 0)
+	ex_options(eap);
+    else
+#endif
+    {
+	if (eap->forceit)
+	    flags |= OPT_ONECOLUMN;
+	(void)do_set(eap->arg, flags);
+    }
+}
+
 /*
  * Parse 'arg' for option settings.
  *
@@ -4349,7 +4370,7 @@
 #define INC 20
 #define GAP 3
 
-    items = ALLOC_MULT(struct vimoption *, PARAM_COUNT);
+    items = ALLOC_MULT(struct vimoption *, OPTION_COUNT);
     if (items == NULL)
 	return;
 
@@ -4364,9 +4385,10 @@
 	msg_puts_title(_("\n--- Options ---"));
 
     /*
-     * do the loop two times:
+     * Do the loop two times:
      * 1. display the short items
      * 2. display the long items (only strings and numbers)
+     * When "opt_flags" has OPT_ONECOLUMN do everything in run 2.
      */
     for (run = 1; run <= 2 && !got_int; ++run)
     {
@@ -4377,12 +4399,12 @@
 	for (p = &options[0]; p->fullname != NULL; p++)
 	{
 	    // apply :filter /pat/
-	    if (message_filtered((char_u *) p->fullname))
+	    if (message_filtered((char_u *)p->fullname))
 		continue;
 
 	    varp = NULL;
 	    isterm = istermoption(p);
-	    if (opt_flags != 0)
+	    if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) != 0)
 	    {
 		if (p->indir != PV_NONE && !isterm)
 		    varp = get_varp_scope(p, opt_flags);
@@ -4394,7 +4416,9 @@
 			|| (all == 1 && !isterm)
 			|| (all == 0 && !optval_default(p, varp, p_cp))))
 	    {
-		if (p->flags & P_BOOL)
+		if (opt_flags & OPT_ONECOLUMN)
+		    len = Columns;
+		else if (p->flags & P_BOOL)
 		    len = 1;		// a toggle option fits always
 		else
 		{
diff --git a/src/optiondefs.h b/src/optiondefs.h
index 8fda8bf..3670107 100644
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -3009,7 +3009,7 @@
     {NULL, NULL, 0, NULL, PV_NONE, {NULL, NULL} SCTX_INIT}
 };
 
-#define PARAM_COUNT (sizeof(options) / sizeof(struct vimoption))
+#define OPTION_COUNT (sizeof(options) / sizeof(struct vimoption))
 
 // The following is needed to make the gen_opt_test.vim script work.
 // {"
diff --git a/src/proto/option.pro b/src/proto/option.pro
index dc07ee6..7da2cbf 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -8,6 +8,7 @@
 void set_init_3(void);
 void set_helplang_default(char_u *lang);
 void set_title_defaults(void);
+void ex_set(exarg_T *eap);
 int do_set(char_u *arg, int opt_flags);
 void did_set_option(int opt_idx, int opt_flags, int new_value, int value_checked);
 int string_to_key(char_u *arg, int multi_byte);
diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim
index 636a24d..7a74af6 100644
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -44,7 +44,7 @@
   set wildchar&
 endfunc
 
-func Test_options()
+func Test_options_command()
   let caught = 'ok'
   try
     options
@@ -388,6 +388,13 @@
   set tw& iskeyword& splitbelow&
 endfunc
 
+func Test_set_one_column()
+  let out_mult = execute('set all')->split("\n")
+  let out_one = execute('set! all')->split("\n")
+  " one column should be two to four times as many lines
+  call assert_inrange(len(out_mult) * 2, len(out_mult) * 4, len(out_one))
+endfunc
+
 func Test_set_values()
   if filereadable('opt_test.vim')
     source opt_test.vim
diff --git a/src/version.c b/src/version.c
index d6fa59c..cae6508 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    128,
+/**/
     127,
 /**/
     126,
diff --git a/src/vim.h b/src/vim.h
index 16949ae..d41db14 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1229,12 +1229,13 @@
  * When OPT_GLOBAL and OPT_LOCAL are both missing, set both local and global
  * values, get local value.
  */
-#define OPT_FREE	1	// free old value if it was allocated
-#define OPT_GLOBAL	2	// use global value
-#define OPT_LOCAL	4	// use local value
-#define OPT_MODELINE	8	// option in modeline
-#define OPT_WINONLY	16	// only set window-local options
-#define OPT_NOWIN	32	// don't set window-local options
+#define OPT_FREE	0x01	// free old value if it was allocated
+#define OPT_GLOBAL	0x02	// use global value
+#define OPT_LOCAL	0x04	// use local value
+#define OPT_MODELINE	0x08	// option in modeline
+#define OPT_WINONLY	0x10	// only set window-local options
+#define OPT_NOWIN	0x20	// don't set window-local options
+#define OPT_ONECOLUMN	0x40	// list options one per line
 
 // Magic chars used in confirm dialog strings
 #define DLG_BUTTON_SEP	'\n'
