How to change visudo editor from nano to vim?

178,185

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.

Share:
178,185

Related videos on Youtube

dedunumax
Author by

dedunumax

That's it!

Updated on September 18, 2022

Comments

  • dedunumax
    dedunumax over 1 year

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

    • Admin
      Admin over 2 years
      My favorite method: get rid of nano: sudo apt purge nano. From this answer in the linked duplicate.
  • Eliah Kagan
    Eliah Kagan over 9 years
    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.
  • Rmano
    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
    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
    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 in sudoers.
  • Jared Beck
    Jared Beck almost 9 years
    What's the difference between vim.basic and vim.tiny?
  • dedunumax
    dedunumax almost 9 years
  • Brain90
    Brain90 over 8 years
    Its more elegant than apt-ing.
  • Арсен Мирзаян
    Арсен Мирзаян over 8 years
    doesn'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
    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
    Luis Vazquez over 4 years
    I 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
    Luis Vazquez over 4 years
    This 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
    xeruf about 4 years
    yes, editing the sudoers file or in my case adding a file /etc/sudoers.d/editor worked perfectly for changing the editor, thanks :)