First method
Add this line to ~/.bashrc:
export SYSTEMD_EDITOR=vim
And then sudo visudo and add this line:
Defaults env_keep += "SYSTEMD_EDITOR"
Start a new bash session to take effect, then run sudo systemctl edit <foo> as usual.
Second method
Use update-alternatives:
Install your desired editor, e.g. vim.gtk3:
$ which editor
editor is /usr/bin/editor
$ sudo update-alternatives --install "$(which editor)" editor "$(which vim.gtk3)" 15
Then choose your desired editor:
$ sudo update-alternatives --config editor
There are 7 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/vim.gtk3 50 auto mode
1 /bin/ed -100 manual mode
* 2 /bin/nano 40 manual mode
3 /usr/bin/code 0 manual mode
4 /usr/bin/gedit 5 manual mode
5 /usr/bin/vim.basic 30 manual mode
6 /usr/bin/vim.gtk3 50 manual mode
7 /usr/bin/vim.tiny 15 manual mode
Press <enter> to keep the current choice[*], or type selection number: 6
update-alternatives: using /usr/bin/vim.gtk3 to provide /usr/bin/editor (editor) in manual mode
Third method
Set the EDITOR at runtime:
sudo EDITOR=vim systemctl edit <foo>
The order of preference is 1st method > 3rd method > 2nd method.
Don't try to set "GUI" editor such as gedit because Why don't gksu/gksudo or launching a graphical application with sudo work with Wayland? and
Gedit uses 100% of the CPU while editing files