Change the default editor when sudo visudo
The problem is not that it does not apply to nano
, it's that it does not apply to the shell:
Just set the VISUAL
environment variable:
export VISUAL=vim
Add this too ~/.bashrc to make it permanent.
As you seem to use vim in general, set both VISUAL
and EDITOR
:
export VISUAL="vim"
export EDITOR="$VISUAL"
or more POSIX-correct
VISUAL="vim" ; export VISUAL
EDITOR="$VISUAL" ; export EDITOR
I assume nano
was the value of one or both variables.
To make use of the editor in visudo actually, we need to handle that sudo
does not keep the environment variables by normally. The option -E
changes that.
sudo -E visudo
Without the -E
here, you would end up with a default of nano
again
The two variables where in use long before files named *.desktop
or mime*
even existed.
(And the impressive thing is: they were actually used as a common standard.)
In Ubuntu, the system default seems to be set with sudo update-alternatives --config editor
. It shows a menu to change the current association.
See section ENVIRONMENT
in man visudo
:
VISUAL Invoked by visudo as the editor to use
EDITOR Used by visudo if VISUAL is not set
As described in this answer, add
Defaults editor=/path/to/editor
to the sudoers file.
Note: this will only work if the file being edited contains the Defaults editor=/path/to/editor
line or includes a file that contains it.
For example: visudo -f /etc/sudoers.d/my_sudoers_extension
will default to Nano.
If you never plan to use nano, you can also simply remove it. Then the system will use vi/vim as the default.
sudo apt-get purge nano
I know it is not the official answer, but it is one of the first commands for me after installing Ubuntu.