mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge #8520 'Ex mode: always "improved" (gQ)'
This commit is contained in:
commit
c1c14faad9
@ -78,7 +78,7 @@ Ex mode. Reads stdin as Ex commands.
|
|||||||
See
|
See
|
||||||
.Ic ":help Ex-mode" .
|
.Ic ":help Ex-mode" .
|
||||||
.It Fl E
|
.It Fl E
|
||||||
Ex mode, improved. Reads stdin as text.
|
Ex mode. Reads stdin as text.
|
||||||
See
|
See
|
||||||
.Ic :help gQ .
|
.Ic :help gQ .
|
||||||
.It Fl es
|
.It Fl es
|
||||||
|
@ -642,25 +642,12 @@ The command CTRL-\ CTRL-G or <C-\><C-G> can be used to go to Insert mode when
|
|||||||
make sure Vim is in the mode indicated by 'insertmode', without knowing in
|
make sure Vim is in the mode indicated by 'insertmode', without knowing in
|
||||||
what mode Vim currently is.
|
what mode Vim currently is.
|
||||||
|
|
||||||
*Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501*
|
*gQ* *Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501*
|
||||||
Q Switch to "Ex" mode. This is a bit like typing ":"
|
Q or gQ Switch to Ex mode. This is like typing ":" commands
|
||||||
commands one after another, except:
|
one after another, except:
|
||||||
- You don't have to keep pressing ":".
|
- You don't have to keep pressing ":".
|
||||||
- The screen doesn't get updated after each command.
|
- The screen doesn't get updated after each command.
|
||||||
- There is no normal command-line editing.
|
Use the ":vi" command |:visual| to exit this mode.
|
||||||
- Mappings and abbreviations are not used.
|
|
||||||
In fact, you are editing the lines with the "standard"
|
|
||||||
line-input editing commands (<Del> or <BS> to erase,
|
|
||||||
CTRL-U to kill the whole line).
|
|
||||||
Vim will enter this mode by default if it's invoked as
|
|
||||||
"ex" on the command-line.
|
|
||||||
Use the ":vi" command |:visual| to exit "Ex" mode.
|
|
||||||
|
|
||||||
*gQ*
|
|
||||||
gQ Switch to "Ex" mode like with "Q", but really behave
|
|
||||||
like typing ":" commands after another. All command
|
|
||||||
line editing, completion etc. is available.
|
|
||||||
Use the ":vi" command |:visual| to exit "Ex" mode.
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
7. The window contents *window-contents*
|
7. The window contents *window-contents*
|
||||||
|
@ -185,11 +185,12 @@ argument.
|
|||||||
delete(), rename(), mkdir(), writefile(), libcall(),
|
delete(), rename(), mkdir(), writefile(), libcall(),
|
||||||
jobstart(), etc.
|
jobstart(), etc.
|
||||||
|
|
||||||
*-e*
|
-e *-e* *-E*
|
||||||
-e Start Vim in Ex mode |Q|.
|
-E Start Nvim in Ex mode |gQ|.
|
||||||
|
|
||||||
*-E*
|
If stdin is not a TTY:
|
||||||
-E Start Vim in improved Ex mode |gQ|.
|
-e reads stdin as Ex commands.
|
||||||
|
-E reads stdin as text (into buffer 1).
|
||||||
|
|
||||||
*-es* *-Es*
|
*-es* *-Es*
|
||||||
-es *-s-ex* *silent-mode*
|
-es *-s-ex* *silent-mode*
|
||||||
@ -207,6 +208,11 @@ argument.
|
|||||||
<
|
<
|
||||||
User |init.vim| is skipped (unless given with |-u|).
|
User |init.vim| is skipped (unless given with |-u|).
|
||||||
|$TERM| is not used.
|
|$TERM| is not used.
|
||||||
|
|
||||||
|
If stdin is not a TTY:
|
||||||
|
-es reads stdin as Ex commands.
|
||||||
|
-Es reads stdin as text (into buffer 1).
|
||||||
|
|
||||||
Example: >
|
Example: >
|
||||||
printf "put ='foo'\n%%print\n" | nvim -es
|
printf "put ='foo'\n%%print\n" | nvim -es
|
||||||
<
|
<
|
||||||
|
@ -315,10 +315,15 @@ Macro/|recording| behavior
|
|||||||
macros and 'keymap' at the same time. This also means you can use |:imap| on
|
macros and 'keymap' at the same time. This also means you can use |:imap| on
|
||||||
the results of keys from 'keymap'.
|
the results of keys from 'keymap'.
|
||||||
|
|
||||||
|
Normal commands:
|
||||||
|
|Q| is the same as |gQ|
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
'ttimeout', 'ttimeoutlen' behavior was simplified
|
'ttimeout', 'ttimeoutlen' behavior was simplified
|
||||||
|
|
||||||
Startup:
|
Startup:
|
||||||
|
|-e| and |-es| invoke the same "improved Ex mode" as -E and -Es.
|
||||||
|
|-E| and |-Es| reads stdin as text (into buffer 1).
|
||||||
|-s| reads Normal commands from stdin if the script name is "-".
|
|-s| reads Normal commands from stdin if the script name is "-".
|
||||||
Reading text (instead of commands) from stdin |--|:
|
Reading text (instead of commands) from stdin |--|:
|
||||||
- works by default: "-" file is optional
|
- works by default: "-" file is optional
|
||||||
@ -465,4 +470,4 @@ TUI:
|
|||||||
always uses 7-bit control sequences.
|
always uses 7-bit control sequences.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
vim:tw=78:ts=8:sw=2:noet:ft=help:norl:
|
||||||
|
@ -188,15 +188,8 @@ static void restore_dbg_stuff(struct dbg_stuff *dsp)
|
|||||||
current_exception = dsp->current_exception;
|
current_exception = dsp->current_exception;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Repeatedly get commands for Ex mode, until the ":vi" command is given.
|
||||||
/*
|
void do_exmode(int improved)
|
||||||
* do_exmode(): Repeatedly get commands for the "Ex" mode, until the ":vi"
|
|
||||||
* command is given.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
do_exmode (
|
|
||||||
int improved /* TRUE for "improved Ex" mode */
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
int save_msg_scroll;
|
int save_msg_scroll;
|
||||||
int prev_msg_row;
|
int prev_msg_row;
|
||||||
@ -232,11 +225,8 @@ do_exmode (
|
|||||||
changedtick = curbuf->b_changedtick;
|
changedtick = curbuf->b_changedtick;
|
||||||
prev_msg_row = msg_row;
|
prev_msg_row = msg_row;
|
||||||
prev_line = curwin->w_cursor.lnum;
|
prev_line = curwin->w_cursor.lnum;
|
||||||
if (improved) {
|
cmdline_row = msg_row;
|
||||||
cmdline_row = msg_row;
|
do_cmdline(NULL, getexline, NULL, 0);
|
||||||
do_cmdline(NULL, getexline, NULL, 0);
|
|
||||||
} else
|
|
||||||
do_cmdline(NULL, getexmodeline, NULL, DOCMD_NOWAIT);
|
|
||||||
lines_left = Rows - 1;
|
lines_left = Rows - 1;
|
||||||
|
|
||||||
if ((prev_line != curwin->w_cursor.lnum
|
if ((prev_line != curwin->w_cursor.lnum
|
||||||
|
@ -301,9 +301,11 @@ int main(int argc, char **argv)
|
|||||||
// Read ex-commands if invoked with "-es".
|
// Read ex-commands if invoked with "-es".
|
||||||
//
|
//
|
||||||
bool reading_tty = !headless_mode
|
bool reading_tty = !headless_mode
|
||||||
|
&& !silent_mode
|
||||||
&& (params.input_isatty || params.output_isatty
|
&& (params.input_isatty || params.output_isatty
|
||||||
|| params.err_isatty);
|
|| params.err_isatty);
|
||||||
bool reading_excmds = !params.input_isatty && silent_mode
|
bool reading_excmds = !params.input_isatty
|
||||||
|
&& silent_mode
|
||||||
&& exmode_active == EXMODE_NORMAL;
|
&& exmode_active == EXMODE_NORMAL;
|
||||||
if (reading_tty || reading_excmds) {
|
if (reading_tty || reading_excmds) {
|
||||||
// One of the startup commands (arguments, sourced scripts or plugins) may
|
// One of the startup commands (arguments, sourced scripts or plugins) may
|
||||||
@ -872,7 +874,7 @@ static void command_line_scan(mparm_T *parmp)
|
|||||||
exmode_active = EXMODE_NORMAL;
|
exmode_active = EXMODE_NORMAL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'E': { // "-E" Improved Ex mode
|
case 'E': { // "-E" Ex mode
|
||||||
exmode_active = EXMODE_VIM;
|
exmode_active = EXMODE_VIM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1896,8 +1898,8 @@ static void usage(void)
|
|||||||
mch_msg("\n");
|
mch_msg("\n");
|
||||||
mch_msg(_(" -b Binary mode\n"));
|
mch_msg(_(" -b Binary mode\n"));
|
||||||
mch_msg(_(" -d Diff mode\n"));
|
mch_msg(_(" -d Diff mode\n"));
|
||||||
mch_msg(_(" -e, -E Ex mode, Improved Ex mode\n"));
|
mch_msg(_(" -e, -E Ex mode\n"));
|
||||||
mch_msg(_(" -es Silent (batch) mode\n"));
|
mch_msg(_(" -es, -Es Silent (batch) mode\n"));
|
||||||
mch_msg(_(" -h, --help Print this help message\n"));
|
mch_msg(_(" -h, --help Print this help message\n"));
|
||||||
mch_msg(_(" -i <shada> Use this shada file\n"));
|
mch_msg(_(" -i <shada> Use this shada file\n"));
|
||||||
mch_msg(_(" -m Modifications (writing files) not allowed\n"));
|
mch_msg(_(" -m Modifications (writing files) not allowed\n"));
|
||||||
|
@ -123,9 +123,19 @@ describe('startup', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
it('-e/-E interactive #7679', function()
|
it('-e/-E interactive #7679', function()
|
||||||
clear('-E')
|
clear('-e')
|
||||||
local screen = Screen.new(25, 3)
|
local screen = Screen.new(25, 3)
|
||||||
screen:attach()
|
screen:attach()
|
||||||
|
feed("put ='from -e'<CR>")
|
||||||
|
screen:expect([[
|
||||||
|
:put ='from -e' |
|
||||||
|
from -e |
|
||||||
|
:^ |
|
||||||
|
]])
|
||||||
|
|
||||||
|
clear('-E')
|
||||||
|
screen = Screen.new(25, 3)
|
||||||
|
screen:attach()
|
||||||
feed("put ='from -E'<CR>")
|
feed("put ='from -E'<CR>")
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
:put ='from -E' |
|
:put ='from -E' |
|
||||||
@ -147,6 +157,14 @@ describe('startup', function()
|
|||||||
eq(inputstr,
|
eq(inputstr,
|
||||||
funcs.system({nvim_prog, '-i', 'NONE', '-Es', '+%print', '-' },
|
funcs.system({nvim_prog, '-i', 'NONE', '-Es', '+%print', '-' },
|
||||||
input))
|
input))
|
||||||
|
-- with `-u NORC`
|
||||||
|
eq('thepartycontinues\n',
|
||||||
|
funcs.system({nvim_prog, '-n', '-u', 'NORC', '-Es', '+.print' },
|
||||||
|
{ 'thepartycontinues', '' }))
|
||||||
|
-- without `-u`
|
||||||
|
eq('thepartycontinues\n',
|
||||||
|
funcs.system({nvim_prog, '-n', '-Es', '+.print' },
|
||||||
|
{ 'thepartycontinues', '' }))
|
||||||
|
|
||||||
--
|
--
|
||||||
-- -es: read stdin as ex-commands
|
-- -es: read stdin as ex-commands
|
||||||
@ -157,6 +175,14 @@ describe('startup', function()
|
|||||||
eq('line1\nline2\n',
|
eq('line1\nline2\n',
|
||||||
funcs.system({nvim_prog, '-i', 'NONE', '-es', '-' },
|
funcs.system({nvim_prog, '-i', 'NONE', '-es', '-' },
|
||||||
input))
|
input))
|
||||||
|
-- with `-u NORC`
|
||||||
|
eq(' encoding=utf-8\n',
|
||||||
|
funcs.system({nvim_prog, '-n', '-u', 'NORC', '-es' },
|
||||||
|
{ 'set encoding', '' }))
|
||||||
|
-- without `-u`
|
||||||
|
eq(' encoding=utf-8\n',
|
||||||
|
funcs.system({nvim_prog, '-n', '-es' },
|
||||||
|
{ 'set encoding', '' }))
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user