问题描述
在执行 sudo visudo
时,默认编辑器是 nano
。\n我想将其更改为 vi
或 vim
。
我已经将 vim
设置为默认编辑器,并通过将 vim.desktop
文件放入 ~/.local/share/applications/
并正确编辑 ~/.local/share/applications/mimeapps.list
或 /etc/gnome/defaults.list
来将其用作 gedit
的替代品来打开 php、.txt、.c 和 .h 文件。但是显然这不适用于 nano
。
任何线索?
最佳答案
问题不是它不适用于 nano
,而是它不适用于 shell:
只需设置 VISUAL
环境变量:
export VISUAL=vim
也添加它 ~/.bashrc 以使其永久化。
正如您一般使用 vim 一样,设置 VISUAL
和 EDITOR
:
export VISUAL="vim"
export EDITOR="$VISUAL"
或更多 POSIX-correct
VISUAL="vim" ; export VISUAL
EDITOR="$VISUAL" ; export EDITOR
我假设 nano
是一个或两个变量的值。
要真正使用visudo中的编辑器,我们需要处理sudo
没有正常保存环境变量。选项 -E
改变了这一点。
sudo -E visudo
如果这里没有 -E
,您将再次使用默认值 nano
这两个变量早在名为 *.desktop
或 mime*
的文件甚至存在之前就已使用。\n(令人印象深刻的是:它们实际上被用作通用标准。)\n在 Ubuntu 中,系统默认值似乎设置为 sudo update-alternatives --config editor
。它显示了一个用于更改当前关联的菜单。
请参阅 man visudo
中的 ENVIRONMENT
部分:
VISUAL Invoked by visudo as the editor to use
EDITOR Used by visudo if VISUAL is not set
次佳答案
如果您从不打算使用 nano,您也可以简单地删除它。那么系统会默认使用vi/vim。
sudo apt-get purge nano
我知道这不是官方答案,但它是我安装 Ubuntu 后的第一个命令之一。
第三种答案
如 this answer 中所述,添加
Defaults editor=/path/to/editor
到 sudoers file 。
注意:这仅在正在编辑的文件包含 Defaults editor=/path/to/editor
行或包含包含它的文件时才有效。
例如:visudo -f /etc/sudoers.d/my_sudoers_extension
将默认为 Nano。