Changing default crontab editor
Matthew Harrington
I am trying to change the default editor from nano to vim.
I have run the following commands:
sudo update-alternatives --config editor
and
update-alternatives --config editor
Both now output:
Selection Path Priority Status
------------------------------------------------------------ 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode
* 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 10 manual modeI have restarted my ssh session and restarted sshd but crontab -e still opens in nano
What else do I need to do?
210 Answers
Just simply run select-editor, this will let you choose any editor you want.
Try your ssh session followed by
export EDITOR=vimor possibly
export EDITOR=/usr/bin/vim.basicThe format of setting of the EDITOR variable depends on which shell you are using.
In Ubuntu you can set the EDITOR environment variable on logon by adding the above to the ~/.profile
Your SSH session will read a similar file (if it exists) on the remote host called ~/.ssh/environment. This has to be specifically defined by the ssh daemon config. See man sshd_config and look for PermitUserEnvironment for more details.
If you only want to choose the editor temporarily, you can do the following
EDITOR=nano crontab -eThis sets the EDITOR environment variable for the command
My personal preference...
cd /bin
mv nano nano_must_die
ln -s /usr/bin/vim nano 5 From "man crontab":
The -e option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables. After you exit from the editor, the modified crontab will be installed automati‐ cally. If neither of the environment variables is defined, then the default editor /usr/bin/editor is used.Perhaps you have the EDITOR enivronment variable set to nano?
On my Ubuntu 12.04 computer, crontab uses the ~/.selected_editor file, which contains the path of the selected editor. Edit it:
nano ~/.selected_editorI have edited it directly or used select-editor, which is a script to do the same thing. Edit the following line:
SELECTED_EDITOR="/usr/bin/vim.basic" IHMO people should not be changing anything in /etc or /bin to do this. It is a user level thing, not a system wide task.
1I was having difficulties with select-editor and update-alternatives, my solution was to simply edit the link:
sudo rm /etc/alternatives/editorsudo ln -s /usr/bin/vim /etc/alternatives/editor
editor now opens Vim
I've had the same problem - crontab -e relies on select-editor, visudo relies on the config of "alternatives"
My solution:
run both commands as root
# update-alternatives --install /usr/bin/editor editor /usr/bin/sensible-editor 50
# select-editor
Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/sensible-editor 3. /usr/bin/vim.basic 4. /usr/bin/vim.tiny
Choose 1-4 [1]: 3 1 After trying the answers above, the only thing that worked for me (in Debian strech) was to remove ~/.selected_editor by running:
rm ~/.selected_editorAnd then select the new editor next time you run crontab -e.
In addition to checking that the environmental variable EDITOR is set correctly, you should also check to make sure the variable VISUAL is also set correctly.
VISUAL will override EDITOR
From the documentation:
The -e option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables.
For example, if you set
$ export EDITOR=vim
$ export VISUAL=nanoThen the command crontab -e will still open in nano.
You should set both to be the editor of choice, ala vim for me:
$ export EDITOR=vim
$ export VISUAL=vimThen the command crontab -e will open in vim.