133

I'm using ubuntu 9.10 and the default text editor is nano, which i hate. (doesn't everyone?)

Normally it's not a problem as i just vi or gedit everything but crontab -e is opening with nano. I tried changing it to vim using sudo update-alternatives --config editor and selecting option 3 ("/usr/bin/vim.basic"). This has changed it for sudo and non-sudo alike. But crontab -e still opens nano. Any ideas? max

12 Answers 12

169

The crontab -e command will check the environment variables $EDITOR and $VISUAL for an override of the default text editor, so...

export VISUAL=vim 

or

export EDITOR=vim 

should do the trick.

1
  • 10
    Remember if you are editing another users's crontab, use sudo -E crontab -e where sudo -E specifies use your env vars. Commented Jan 28, 2016 at 19:15
114

In ubuntu, try run: select-editor, which interactively creates ~/.selected_editor:

# Generated by /usr/bin/select-editor SELECTED_EDITOR="/usr/bin/vim.basic" 
6
  • 4
    Above answers didn't work...this does. Commented Jan 25, 2013 at 19:59
  • 2
    Yup, this changes ~/.sensible_editor used by /usr/bin/sensible-editor. It seems that in the absence of the environment variables specifying the editor, crontab runs sensible-editor not editor as the former allows per-user configuration. Commented Feb 25, 2015 at 5:25
  • 2
    @MaxWilliams, running select-editor will not show the previously made selection, which is stored in ~/.sensible_editor. Commented Feb 25, 2015 at 5:27
  • 5
    @eelghEEz - Do you mean ~/.selected_editor? That's what's on my system and what I've seen elsewhere. Commented Jun 13, 2016 at 18:03
  • 1
    works for debian too Commented Sep 3, 2017 at 17:46
28

If you hate nano so much you can just uninstall it:

sudo apt-get remove nano 

crontab should then just default to the next EDITOR (for me it was vim.basic).

3
  • We run our cron jobs with super-user account, but login to a dev account. So from dev account I need to do sudo crontab -e. I set export EDITOR=vim in both super-user's and the dev account's .bashrc, but sudo crontab -e was still opening up in nano. After uninstalling nano, it opens vim. Thanks! Commented Jul 27, 2013 at 17:06
  • 1
    This is the only solution that worked for me. Tried 4-5 things before this :) Commented Nov 24, 2015 at 1:54
  • 1
    This is by far the best solution if, as the OP implies, you never need nano. Not sure why it didn't occur to me before - probably that I didn't realise crontab would just default to the next available editor! Awesome Commented Mar 20, 2017 at 16:08
15

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. 

Add to your ~/.bashrc:

export EDITOR=vim 
6
export EDITOR=vi && crontab -e 

works on debian squeeze

2
  • 2
    A little explanation would go a long way. Commented Oct 1, 2012 at 21:15
  • 3
    this sets the EDITOR environment variable and subsequently edits the crontab file, EDITOR=vim crontab -e will work as well, but only one time. Commented Nov 21, 2012 at 16:56
5

The better choice is to set alternative of editor (not just one user) :

sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 100 
1
  • 4
    Why is it better to change the setting for other users, who did not asked for the change? Commented Apr 25, 2017 at 15:37
4

Unfortunately I can not comment or vote.

On Ubuntu the configuration file is called ~/.selected_editor

With the following command you can select the default editor again:

$ select-editor 

Removing the file in your home directory also works.

$ rm ~/.selected_editor 

Only setting the variables $VISUAL or $EDITOR will work but is only persistent if you write it to a script which is executed in your environment.

Add to your rc file

$ echo "export VISUAL=/usr/bin/vi" >> ~/.bashrc 

But i wouldn't recommend to use the last solution.

2
  • If you don't recommend it why did you provide it? Commented Jan 5, 2016 at 11:52
  • Just for completion and because other people may prefer that way. Commented Jan 6, 2016 at 14:46
0

You should best remove the ~/.sensible_editor file and then running crontab -e will prompt you to choose the preferred editor.
From then on your preference will be remembered in the ~/.sensible_editor file.

2
  • not sure why this was down voted it is exactly what I need and worked perfectly. Commented Oct 28, 2015 at 13:28
  • Ubuntu does not seem to know emacsclient. Commented Apr 25, 2017 at 15:35
0

Easiest would be to get rid of the product you don't want in its entirety. All other config changes would be automatical.

apt-get install vim -y && apt-get remove nano -y

0

The first answer worked for me, but I had to do this after saving changes in ~/.bashrc

source ~/.bashrc 

That way you refresh your configuration.

1
  • 1
    Welcome to Super User! Before answering an old question having an accepted answer (look for green ✓) as well as other answers ensure your answer adds something new or is otherwise helpful in relation to them. Here is a guide on How to Answer. There is also a site tour and a help center. Commented Aug 29, 2022 at 17:00
-1

for Debian, use :

sudo update-alternatives --config editor command 

and

 ---------------------------------------------------------- 06 * 0 /bin/nano 40 07 1 /bin/nano 40 08 2 /usr/bin/vim.basic 30 09 3 /usr/bin/vim.tiny 10 

select '2' and press enter. Got it!

1
  • 1
    Welcome to Super User! Please read the question again carefully. Your answer does not answer the original question. The OP already tried this (it's in the question) and it did not fix his problem. Commented Dec 19, 2015 at 18:03
-1

On older machines like some Debian ones, this works also and is the most portable solution.

mv /usr/bin/editor /usr/bin/.editor ln -s $(which vim) /usr/bin/editor 
1
  • 1
    No, don't mess with anything in /usr/bin manually; these locations are managed by dpkg and should not be manipulated directly. Commented Apr 12, 2018 at 11:51

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.