How to change visudo editor from nano to vim?
Solution 1
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
Solution 2
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.
Related videos on Youtube
Comments
-
dedunumax over 1 year
When I use
visudo
, it always opens it withnano
editor. How to change the editor to vim?-
Admin over 2 yearsMy favorite method: get rid of nano:
sudo apt purge nano
. From this answer in the linked duplicate.
-
-
Eliah Kagan over 9 yearsDid you try this out? Running
sudo visudo
after settingEDITOR
(orVISUAL
) tovim
and exporting it does not--and should not be expected to--result invisudo
usingvim
instead ofnano
as the editor. By default,sudo
resets most environment variables for the commands it runs. Only a handful are retained.EDITOR
andVISUAL
are not. Thus, afterexport EDITOR=vim
,EDITOR
will still not be set tovim
for thevisudo
process launched bysudo visudo
.EDITOR=vim sudo visudo
does the same thing and thus also doesn't work.sudo EDITOR=vim visudo
does work. -
Rmano over 9 years...@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 over 9 years@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. -
muru over 9 years@Rmano it's not "once upon a time" exactly, but depends on what flags
visudo
was compiled and what options are set insudoers
. -
Jared Beck almost 9 yearsWhat's the difference between
vim.basic
andvim.tiny
? -
dedunumax almost 9 yearsaskubuntu.com/questions/483308/… might answer you. check this also askubuntu.com/questions/104138/what-features-does-vim-tiny-have
-
Brain90 over 8 yearsIts more elegant than apt-ing.
-
Арсен Мирзаян over 8 yearsdoesn't using the EDITOR variable create a security hole as in the man page of visudo?
Note that this can be a security hole since it allows the user to execute any program they wish simply by setting VISUAL or EDITOR.
-
Alexander Pozdneev about 6 years
sudo EDITOR=vim visudo
is the way to go if you do not want to change the configuration permanently (see an another answer below). -
Luis Vazquez over 4 yearsI give an extra point to this response because it doesn't only gives a solution using a tool only valid with some distribution, but instead dive into the problem and explain what's under the hood by giving different options to get the desired behaviour in the general Linux case.
-
Luis Vazquez over 4 yearsThis solution is not correct for the original question, because only address the problem in the Ubuntu/Debian case. The response should be for every (or at least the majority) of the posix compliant Linux systems, and at least one the responses below is more close to this target.
-
xeruf about 4 yearsyes, editing the sudoers file or in my case adding a file
/etc/sudoers.d/editor
worked perfectly for changing the editor, thanks :)