更改 sudo visudo 时的默认编辑器

更改 sudo visudo 时的默认编辑器

执行时sudo visudo,默认编辑器是nano
我想将其更改为vivim

我已经制作了vim默认编辑器,并用它来代替gedit打开 php、.txt、.c 和 .h 文件,方法是将vim.desktop文件放入~/.local/share/applications/并正确编辑 ~/.local/share/applications/mimeapps.list/etc/gnome/defaults.list。然而,这显然不适用于nano

有什么线索吗?

答案1

问题不在于它不适用于nano,而在于它不适用于 shell:

只需设置VISUAL环境变量:

export VISUAL=vim

将其添加到 ~/.bashrc 以使其永久生效。

由于您似乎通常使用 vim,因此请同时设置VISUALEDITOR

export VISUAL="vim"
export EDITOR="$VISUAL"

或更多符合 POSIX 规范

VISUAL="vim" ; export VISUAL
EDITOR="$VISUAL" ; export EDITOR

我假设nano这是一个或两个变量的值。

为了真正使用 visudo 中的编辑器,我们需要处理sudo无法正常保存环境变量的问题。该选项-E可以改变这种情况。

sudo -E visudo

如果没有这里,你最终-E会得到一个默认值nano


这两个变量早在文件命名*.desktop甚至mime*存在之前就已被使用。
(令人印象深刻的是:它们实际上被用作常见的标准。)
在 Ubuntu 中,系统默认设置似乎是sudo update-alternatives --config editor。它显示一个菜单来更改当前关联。


ENVIRONMENT请参阅man visudo

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set

答案2

如果你从不打算使用 nano,你也可以直接删除它。然后系统将使用 vi/vim 作为默认设置。

sudo apt-get purge nano

我知道这不是官方答案,但这是我安装 Ubuntu 后的第一个命令之一。

答案3

正如所述这个答案, 添加

Defaults editor=/path/to/editor

sudoers文件

注意:仅当正在编辑的文件包含该Defaults editor=/path/to/editor行或包含包含该行的文件时,这才会起作用。

例如:visudo -f /etc/sudoers.d/my_sudoers_extension将默认为 Nano。

答案4

使用的问题:

export VISUAL="vim"
export EDITOR="$VISUAL"

sudo visudo会清理用户环境变量,以便这些变量在 root 环境中设置。如果您是机器的唯一用户(或者每个人都喜欢 VIM),您也可以始终将这些变量设置为 root 的环境。

相关内容