Interface cleanup: Symlink handling & docs

This removes the ability to start nvim via the following aliases in
favor of just using their command line arguments:

ex        vim -e
exim      vim -E
view      vim -R
gvim      vim -g
gex       vim -eg
gview     vim -Rg
rvim      vim -Z
rview     vim -RZ
rgvim     vim -gZ
rgview    vim -RgZ

This also removes Vi mode (-v) for consistency. From ':help -v':

    -v  Start Ex in Vi mode.  Only makes a difference when the
    executable is called "ex" or "gvim".  For gvim the GUI is not
    started if possible.
This commit is contained in:
Michael Reed
2015-02-17 15:34:15 -05:00
parent 5fcd12f8b5
commit 481ebc0bb1
11 changed files with 36 additions and 172 deletions

View File

@@ -1551,9 +1551,9 @@ v:profiling Normally zero. Set to one after using ":profile start".
See |profiling|. See |profiling|.
*v:progname* *progname-variable* *v:progname* *progname-variable*
v:progname Contains the name (with path removed) with which Vim was v:progname Contains the name (with path removed) with which Nvim was
invoked. Allows you to do special initialisations for |view|, invoked. Allows you to do special initialisations for any
|rview|, or any other name you might symlink to Vim. other name you might symlink to Nvim.
Read-only. Read-only.
*v:progpath* *progpath-variable* *v:progpath* *progpath-variable*

View File

@@ -1128,7 +1128,6 @@ Context-sensitive completion on the command-line:
|-+| +[num] put the cursor at line [num] (default: last line) |-+| +[num] put the cursor at line [num] (default: last line)
|-+c| +{command} execute {command} after loading the file |-+c| +{command} execute {command} after loading the file
|-+/| +/{pat} {file} .. put the cursor at the first occurrence of {pat} |-+/| +/{pat} {file} .. put the cursor at the first occurrence of {pat}
|-v| -v Vi mode, start ex in Normal mode
|-e| -e Ex mode, start vim in Ex mode |-e| -e Ex mode, start vim in Ex mode
|-R| -R Read-only mode, implies -n |-R| -R Read-only mode, implies -n
|-m| -m modifications not allowed (resets 'write' option) |-m| -m modifications not allowed (resets 'write' option)

View File

@@ -19,11 +19,11 @@ Starting Vim *starting*
Most often, Vim is started to edit a single file with the command Most often, Vim is started to edit a single file with the command
vim filename *-vim* nvim filename *-vim*
More generally, Vim is started with: More generally, Vim is started with:
vim [option | filename] .. nvim [option | filename] ..
Option arguments and file name arguments can be mixed, and any number of them Option arguments and file name arguments can be mixed, and any number of them
can be given. However, watch out for options that take an argument. can be given. However, watch out for options that take an argument.
@@ -39,7 +39,7 @@ filename One or more file names. The first one will be the current
on the first line of the buffer. on the first line of the buffer.
To avoid a file name starting with a '-' being interpreted as To avoid a file name starting with a '-' being interpreted as
an option, precede the arglist with "--", e.g.: > an option, precede the arglist with "--", e.g.: >
vim -- -filename nvim -- -filename
< All arguments after the "--" will be interpreted as file names, < All arguments after the "--" will be interpreted as file names,
no other options or "+command" argument can follow. no other options or "+command" argument can follow.
@@ -48,22 +48,18 @@ filename One or more file names. The first one will be the current
mode is to be used. mode is to be used.
Starting in Normal mode: > Starting in Normal mode: >
vim - nvim -
ex -v -
< Start editing a new buffer, which is filled with text < Start editing a new buffer, which is filled with text
that is read from stdin. The commands that would normally be that is read from stdin. The commands that would normally be
read from stdin will now be read from stderr. Example: > read from stdin will now be read from stderr. Example: >
find . -name "*.c" -print | vim - find . -name "*.c" -print | nvim -
< The buffer will be marked modified, because it contains text < The buffer will be marked modified, because it contains text
that needs to be saved. Except when in readonly mode, then that needs to be saved. Except when in readonly mode, then
the buffer is not marked modified. Example: > the buffer is not marked modified. Example: >
ls | view - ls | nvim -R -
<
Starting in Ex mode: > Starting in Ex mode: >
ex - nvim -e -
vim -e - nvim -E
exim -
vim -E
< Start editing in silent mode. See |-s-ex|. < Start editing in silent mode. See |-s-ex|.
*-t* *-tag* *-t* *-tag*
@@ -85,32 +81,6 @@ filename One or more file names. The first one will be the current
(nothing) Without one of the four items above, Vim will start editing a (nothing) Without one of the four items above, Vim will start editing a
new buffer. It's empty and doesn't have a file name. new buffer. It's empty and doesn't have a file name.
The startup mode can be changed by using another name instead of "vim", which
is equal to giving options:
ex vim -e Start in Ex mode (see |Ex-mode|). *ex*
exim vim -E Start in improved Ex mode (see |Ex-mode|). *exim*
(normally not installed)
view vim -R Start in read-only mode (see |-R|). *view*
gvim vim -g Start the GUI (see |gui|). *gvim*
gex vim -eg Start the GUI in Ex mode. *gex*
gview vim -Rg Start the GUI in read-only mode. *gview*
rvim vim -Z Like "vim", but in restricted mode (see |-Z|) *rvim*
rview vim -RZ Like "view", but in restricted mode. *rview*
rgvim vim -gZ Like "gvim", but in restricted mode. *rgvim*
rgview vim -RgZ Like "gview", but in restricted mode. *rgview*
Additional characters may follow, they are ignored. For example, you can have
"gvim-5" to start the GUI. You must have an executable by that name then, of
course.
On Unix, you would normally have one executable called Vim, and links from the
different startup-names to that executable. If your system does not support
links and you do not want to have several copies of the executable, you could
use an alias instead. For example: >
alias view vim -R
alias gvim vim -g
<
*startup-options* *startup-options*
The option arguments may be given in any order. Single-letter options can be The option arguments may be given in any order. Single-letter options can be
combined after one dash. There can be no option arguments after the "--" combined after one dash. There can be no option arguments after the "--"
@@ -245,28 +215,20 @@ argument.
-g Start Vim in GUI mode. See |gui|. For the opposite see |-v|. -g Start Vim in GUI mode. See |gui|. For the opposite see |-v|.
{not in Vi} {not in Vi}
*-v*
-v Start Ex in Vi mode. Only makes a difference when the
executable is called "ex" or "gvim". For gvim the GUI is not
started if possible.
*-e* *-e*
-e Start Vim in Ex mode |Q|. Only makes a difference when the -e Start Vim in Ex mode |Q|.
executable is not called "ex".
*-E* *-E*
-E Start Vim in improved Ex mode |gQ|. Only makes a difference -E Start Vim in improved Ex mode |gQ|.
when the executable is not called "exim".
{not in Vi}
*-s-ex* *-s-ex*
-s Silent or batch mode. Only when Vim was started as "ex" or -s Silent or batch mode. Only when "-s" is preceded by the "-e"
when preceded with the "-e" argument. Otherwise see |-s|, argument. Otherwise see |-s|, which does take an argument
which does take an argument while this use of "-s" doesn't. while this use of "-s" doesn't. To be used when Vim is used
To be used when Vim is used to execute Ex commands from a file to execute Ex commands from a file instead of a terminal.
instead of a terminal. Switches off most prompts and Switches off most prompts and informative messages. Also
informative messages. Also warnings and error messages. warnings and error messages. The output of these commands is
The output of these commands is displayed (to stdout): displayed (to stdout):
:print :print
:list :list
:number :number
@@ -561,14 +523,6 @@ argument.
Note that the implementation is still primitive. It won't Note that the implementation is still primitive. It won't
work with all applications and the menu doesn't work. work with all applications and the menu doesn't work.
If the executable is called "view", Vim will start in Readonly mode. This is
useful if you can make a hard or symbolic link from "view" to "vim".
Starting in Readonly mode can also be done with "vim -R".
If the executable is called "ex", Vim will start in "Ex" mode. This means it
will accept only ":" commands. But when the "-v" argument is given, Vim will
start in Normal mode anyway.
Additional arguments are available on unix like systems when compiled with Additional arguments are available on unix like systems when compiled with
X11 GUI support. See |gui-resources|. X11 GUI support. See |gui-resources|.

View File

@@ -434,27 +434,9 @@ someone supplied, you can't do this. Do delete the files manually, here is an
example for when "/usr/local" was used as the root: > example for when "/usr/local" was used as the root: >
rm -rf /usr/local/share/vim/vim61 rm -rf /usr/local/share/vim/vim61
rm /usr/local/bin/ex
rm /usr/local/bin/gview
rm /usr/local/bin/gvim
rm /usr/local/bin/gvim
rm /usr/local/bin/rgview
rm /usr/local/bin/rgvim
rm /usr/local/bin/rview
rm /usr/local/bin/rvim
rm /usr/local/bin/rvim
rm /usr/local/bin/view
rm /usr/local/bin/vim rm /usr/local/bin/vim
rm /usr/local/bin/vimtutor rm /usr/local/bin/vimtutor
rm /usr/local/bin/xxd rm /usr/local/bin/xxd
rm /usr/local/man/man1/ex.1
rm /usr/local/man/man1/gview.1
rm /usr/local/man/man1/gvim.1
rm /usr/local/man/man1/rgview.1
rm /usr/local/man/man1/rgvim.1
rm /usr/local/man/man1/rview.1
rm /usr/local/man/man1/rvim.1
rm /usr/local/man/man1/view.1
rm /usr/local/man/man1/vim.1 rm /usr/local/man/man1/vim.1
rm /usr/local/man/man1/vimtutor.1 rm /usr/local/man/man1/vimtutor.1
rm /usr/local/man/man1/xxd.1 rm /usr/local/man/man1/xxd.1

View File

@@ -830,10 +830,9 @@ Only Vim is able to accept options in between and after the file names.
-D Vim: debug mode. -D Vim: debug mode.
-e Elvis, Nvi, Vim: Start in Ex mode, as if the executable is -e Elvis, Nvi, Vim: Start in Ex mode.
called "ex".
-E Vim: Start in improved Ex mode |gQ|, like "exim". -E Vim: Start in improved Ex mode |gQ|.
-f Vim: Run GUI in foreground. -f Vim: Run GUI in foreground.
-f {session} Elvis: Use {session} as the session file. -f {session} Elvis: Use {session} as the session file.

View File

@@ -14,7 +14,7 @@
" License: VIM License " License: VIM License
" Vim is Charityware, see ":help Uganda" " Vim is Charityware, see ":help Uganda"
" "
" Usage: $ ls -la | view -c "set ft=dirpager" - " Usage: $ ls -la | nvim -R -c "set ft=dirpager" -
" "
" "
",----[ ls(1posix) ]-------------------------------------------------- ",----[ ls(1posix) ]--------------------------------------------------

View File

@@ -213,7 +213,7 @@ open_buffer (
* So the modelines have priority over auto commands. * So the modelines have priority over auto commands.
*/ */
/* When reading stdin, the buffer contents always needs writing, so set /* When reading stdin, the buffer contents always needs writing, so set
* the changed flag. Unless in readonly mode: "ls | gview -". * the changed flag. Unless in readonly mode: "ls | nvim -R -".
* When interrupted and 'cpoptions' contains 'i' set changed flag. */ * When interrupted and 'cpoptions' contains 'i' set changed flag. */
if ((got_int && vim_strchr(p_cpo, CPO_INTMOD) != NULL) if ((got_int && vim_strchr(p_cpo, CPO_INTMOD) != NULL)
|| modified_was_set /* ":set modified" used in autocmd */ || modified_was_set /* ":set modified" used in autocmd */

View File

@@ -853,7 +853,7 @@ void do_bang(int addr_count, exarg_T *eap, int forceit, int do_in, int do_out)
int scroll_save = msg_scroll; int scroll_save = msg_scroll;
/* /*
* Disallow shell commands for "rvim". * Disallow shell commands in restricted mode (-Z)
* Disallow shell commands from .exrc and .vimrc in current directory for * Disallow shell commands from .exrc and .vimrc in current directory for
* security reasons. * security reasons.
*/ */
@@ -1217,7 +1217,7 @@ do_shell (
int save_nwr; int save_nwr;
/* /*
* Disallow shell commands for "rvim". * Disallow shell commands in restricted mode (-Z)
* Disallow shell commands from .exrc and .vimrc in current directory for * Disallow shell commands from .exrc and .vimrc in current directory for
* security reasons. * security reasons.
*/ */
@@ -3378,7 +3378,7 @@ void ex_z(exarg_T *eap)
int check_restricted(void) int check_restricted(void)
{ {
if (restricted) { if (restricted) {
EMSG(_("E145: Shell commands not allowed in rvim")); EMSG(_("E145: Shell commands not allowed in restricted mode"));
return TRUE; return TRUE;
} }
return FALSE; return FALSE;

View File

@@ -5375,9 +5375,7 @@ static void ex_hide(exarg_T *eap)
*/ */
static void ex_stop(exarg_T *eap) static void ex_stop(exarg_T *eap)
{ {
/* // Disallow suspending in restricted mode (-Z)
* Disallow suspending for "rvim".
*/
if (!check_restricted()) { if (!check_restricted()) {
if (!eap->forceit) { if (!eap->forceit) {
autowrite_all(); autowrite_all();

View File

@@ -601,7 +601,7 @@ EXTERN volatile int full_screen INIT(= FALSE);
* otherwise only writing some messages */ * otherwise only writing some messages */
EXTERN int restricted INIT(= FALSE); EXTERN int restricted INIT(= FALSE);
/* TRUE when started as "rvim" */ // TRUE when started in restricted mode (-Z)
EXTERN int secure INIT(= FALSE); EXTERN int secure INIT(= FALSE);
/* non-zero when only "safe" commands are /* non-zero when only "safe" commands are
* allowed, e.g. when sourcing .exrc or .vimrc * allowed, e.g. when sourcing .exrc or .vimrc

View File

@@ -204,11 +204,9 @@ int main(int argc, char **argv)
// Check if we have an interactive window. // Check if we have an interactive window.
check_and_set_isatty(&params); check_and_set_isatty(&params);
/* // Get the name with which Nvim was invoked, with and without path.
* Figure out the way to work from the command name argv[0]. set_vim_var_string(VV_PROGPATH, (char_u *)argv[0], -1);
* "view" sets "readonlymode", "rvim" sets "restricted", etc. set_vim_var_string(VV_PROGNAME, path_tail((char_u *)argv[0]), -1);
*/
parse_command_name(&params);
/* /*
* Process the command line arguments. File names are put in the global * Process the command line arguments. File names are put in the global
@@ -820,69 +818,8 @@ static void init_locale(void)
} }
TIME_MSG("locale set"); TIME_MSG("locale set");
} }
#endif #endif
/*
* Check for: [r][g][vi|vim|view][ex[im]]
* If the executable name starts with "r" we disable shell commands.
* If the next character is "g" we run the GUI version.
* If the next characters are "view" we start in readonly mode.
* If the next characters are "ex" we start in Ex mode. If it's followed
* by "im" use improved Ex mode.
*/
static void parse_command_name(mparm_T *parmp)
{
char_u *initstr;
initstr = path_tail((char_u *)parmp->argv[0]);
set_vim_var_string(VV_PROGNAME, initstr, -1);
set_vim_var_string(VV_PROGPATH, (char_u *)parmp->argv[0], -1);
if (parse_string(&initstr, "editor", 6))
return;
if (parse_char_i(&initstr, 'r'))
restricted = TRUE;
/* "gvim" starts the GUI. Also accept "Gvim" for MS-Windows. */
if (parse_char_i(&initstr, 'g'))
main_start_gui();
if (parse_string(&initstr, "view", 4)) {
readonlymode = TRUE;
curbuf->b_p_ro = TRUE;
p_uc = 10000; /* don't update very often */
} else {
parse_string(&initstr, "vim", 3); /* consume "vim" if it's there */
}
if (parse_string(&initstr, "ex", 2)) {
if (parse_string(&initstr, "im", 2))
exmode_active = EXMODE_VIM;
else
exmode_active = EXMODE_NORMAL;
}
}
static bool parse_char_i(char_u **input, char val)
{
if (TOLOWER_ASC(**input) == val) {
*input += 1; /* or (*input)++ WITH parens */
return true;
}
return false;
}
static bool parse_string(char_u **input, char *val, int len)
{
if (STRNICMP(*input, val, len) == 0) {
*input += len;
return true;
}
return false;
}
/* /*
* Scan the command line arguments. * Scan the command line arguments.
@@ -1134,10 +1071,6 @@ static void command_line_scan(mparm_T *parmp)
} }
break; break;
case 'v': /* "-v" Vi-mode (as if called "vi") */
exmode_active = 0;
break;
case 'w': /* "-w{number}" set window height */ case 'w': /* "-w{number}" set window height */
/* "-w {scriptout}" write to script */ /* "-w {scriptout}" write to script */
if (vim_isdigit(((char_u *)argv[0])[argv_idx])) { if (vim_isdigit(((char_u *)argv[0])[argv_idx])) {
@@ -2034,13 +1967,12 @@ static void usage(void)
#if !defined(UNIX) #if !defined(UNIX)
mch_msg(_(" --literal Don't expand wildcards\n")); mch_msg(_(" --literal Don't expand wildcards\n"));
#endif #endif
mch_msg(_(" -v Vi mode (like \"vi\")\n")); mch_msg(_(" -e Ex mode\n"));
mch_msg(_(" -e Ex mode (like \"ex\")\n"));
mch_msg(_(" -E Improved Ex mode\n")); mch_msg(_(" -E Improved Ex mode\n"));
mch_msg(_(" -s Silent (batch) mode (only for \"ex\")\n")); mch_msg(_(" -s Silent (batch) mode (only for ex mode)\n"));
mch_msg(_(" -d Diff mode\n")); mch_msg(_(" -d Diff mode\n"));
mch_msg(_(" -R Readonly mode (like \"view\")\n")); mch_msg(_(" -R Readonly mode\n"));
mch_msg(_(" -Z Restricted mode (like \"rvim\")\n")); mch_msg(_(" -Z Restricted mode\n"));
mch_msg(_(" -m Modifications (writing files) not allowed\n")); mch_msg(_(" -m Modifications (writing files) not allowed\n"));
mch_msg(_(" -M Modifications in text not allowed\n")); mch_msg(_(" -M Modifications in text not allowed\n"));
mch_msg(_(" -b Binary mode\n")); mch_msg(_(" -b Binary mode\n"));