This question already has an answer here:

When I use visudo, it always opens it with nano editor. How to change the editor to vim?

share|improve this question

marked as duplicate by Eliah Kagan, αғsнιη, Radu Rădeanu command-line Oct 20 '14 at 11:44

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

Type sudo update-alternatives --config editor

You will get a text like below.

There are 4 choices for the alternative editor (providing /usr/bin/editor).

  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 mode

Press enter to keep the current choice[*], or type selection number: 3

Find vim.basic or vim.tiny selection number. Type it and press enter. Next time when you open visudo your editor will be vim

share|improve this answer
1  
What's the difference between vim.basic and vim.tiny? – Jared Beck May 11 '15 at 15:02
1  

If you want just to make your user use by default a different editor, add

export EDITOR=vim; 

in your .profile (or wherever you keep your startup environment if using a shell different from bash). Log out, log in, check that the variable is set:

[romano:~] % env | grep EDI
EDITOR=vim

and now all the programs that call an editor (and are well written) will default to vim for your user.

As noticed by @EliahKagan (thanks!) in the comment, this will not work for visudo: since you are supposed to call it using sudo, when you do

sudo visudo

the sudo command will sanitize (read: delete) most environment variables before rising privileges --- and it's a good thing it does. So the change will not percolate to visudo. To still have it working, you have to call it like:

sudo EDITOR=vim visudo

Finally, as hinted here, you can also add a line to your /etc/sudoers file near the top that reads:

Defaults editor=/usr/bin/vim 

A word of warning: when modifying your sudoers configuration, keep a terminal open with a root shell in it (with sudo -i). You never know, and you can easily get locked out of root.

share|improve this answer
2  
Did you try this out? Running sudo visudo after setting EDITOR (or VISUAL) to vim and exporting it does not--and should not be expected to--result in visudo using vim instead of nano as the editor. By default, sudo resets most environment variables for the commands it runs. Only a handful are retained. EDITOR and VISUAL are not. Thus, after export EDITOR=vim, EDITOR will still not be set to vim for the visudo process launched by sudo visudo. EDITOR=vim sudo visudo does the same thing and thus also doesn't work. sudo EDITOR=vim visudo does work. – Eliah Kagan Oct 20 '14 at 9:56
    
...@EliahKagan, you are obviously right. I was thinking in deleting the answer, but your added information is valuable, so I tried to retain it somehow. – Rmano Oct 20 '14 at 10:06
    
@EliahKagan ...and I know from where come my confusion... look at unix.stackexchange.com/a/4409/52205 --- seems that, once upon a time, sudo did pass the EDITOR variable. – Rmano Oct 20 '14 at 10:13
    
@Rmano it's not "once upon a time" exactly, but depends on what flags visudo was compiled and what options are set in sudoers. – muru Oct 20 '14 at 10:20
    
Its more elegant than apt-ing. – Brain90 Nov 12 '15 at 1:23

Not the answer you're looking for? Browse other questions tagged or ask your own question.