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 runningemacsclient
in a script. It specifies a command to run ifemacsclient
fails to contact Emacs. For example, the following setting for theEDITOR
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