What is the `editor` command in bash?

The editor program called by some programs when you tell them to edit a file. You have to set the environment variable yourself.

If you use csh or tcsh, at the shell prompt:

setenv EDITOR vim

If you use bash or ksh, then enter:

EDITOR=vim; export EDITOR

(Replace "vim" with the editor you want to use.)

The EDITOR variable is the one you need by default for some applications to invoke the editor. There is another variable called VISUAL used to specify the screen-oriented editor. Generally you will want to set it to the same value as the EDITOR variable. Originally EDITOR would have be set to ed (a line-based editor) and VISUAL would've been set to vi (a screen-based editor).

VISUAL="vim"; export VISUAL
VISUAL="$EDITOR"; export VISUAL  #even better

When you have done this, most Unix programs that use text editors will use the editor you have set. By following the commands above, you will set the default editor for the current computing session only. To make these changes permanent, you will need to place the appropriate commands described above in your .login or .cshrc files (for csh or tcsh users) or your .profile file (if you use bash or ksh).

There is also another environment variable, if you pretend to use Emacs. It's ALTERNATE_EDITOR, and has the same effect, but it's used when Emacs is invoked with --alternate-editor option.

From the GNU Emacs Manual:

The option --alternate-editor=command is useful when running emacsclient in a script. It specifies a command to run if emacsclient fails to contact Emacs. For example, the following setting for the EDITOR environment variable will always give an editor, even if Emacs is not running:

EDITOR="emacsclient --alternate-editor vi +%d %s"

This is a Debian-ism (and therefore appears in Ubuntu, Mint, etc.). They've setup a link called editor. You can trace it back as follows:

$ which editor
/usr/bin/editor

$ ls -l /usr/bin/editor 
lrwxrwxrwx 1 root root 24 Nov 24 19:10 /usr/bin/editor -> /etc/alternatives/editor

$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 18 Nov 24 19:46 /etc/alternatives/editor -> /usr/bin/vim.gnome

$ ls -l /usr/bin/vim.gnome
-rwxr-xr-x 1 root root 2403392 Oct 26  2012 /usr/bin/vim.gnome

So you can see that editor is just a Unix link to the executable vim.gnome.

Using editor?

I don't think I'd go in that direction of setting up editor in any meaningful way for users, given it's not what I would consider standard.

Additionally you can set the $EDITOR environment variable to point to anything you want, vim, gedit, emacs, etc. But this variable is only guaranteed to be used by other tools such as sudo, git, and subversion that are specifically designed to be tied into using the variable $EDITOR.

Implementation ideas

I would merely setup an alias of your own choice and either instruct the users that it's available to them via their $HOME/.bashrc file as alias X, or set it up as a system configuration in the file /etc/profile.d/our_aliases.sh, as alias X.

Or you could just tell users that the systems' provide gedit, gvim, vim, emacs, etc. and cut through the sugar coating and teach them about these things right off the bat.

Or you could provide a text file called /etc/help.txt which they could run via a command help (alias help="less /etc/help.txt") in a shell that would provide basic commands and how to perform various tasks. This approach allows you to customize the help as time goes by with new features or tips and it gives them more than just the editor convenience command.


You will have to specify the editor in the environment variable EDITOR. Add the following command in your .profile:

export EDITOR=editor

If you want vim as your default editor, you will add instead

export EDITOR=vim

Personal preference: I use the absolute path name of the editor in the environment variable. For example,

export EDITOR=/usr/bin/vim