sudo visudo 时更改默认编辑器

Cbh*_*ihe 28 vim nano default-programs 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.

任何线索?

Vol*_*gel 21

问题不是它不适用于nano,而是它不适用于外壳:

只需设置VISUAL环境变量:

export VISUAL=vim
Run Code Online (Sandbox Code Playgroud)

也添加这个 ~/.bashrc 以使其永久化。

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

export VISUAL="vim"
export EDITOR="$VISUAL"
Run Code Online (Sandbox Code Playgroud)

或更多 POSIX 正确

VISUAL="vim" ; export VISUAL
EDITOR="$VISUAL" ; export EDITOR
Run Code Online (Sandbox Code Playgroud)

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

为了在visudo中实际使用编辑器,我们需要正常处理sudo不保留环境变量的情况。该选项-E改变了这一点。

sudo -E visudo
Run Code Online (Sandbox Code Playgroud)

没有-E这里,你最终会得到一个默认的nano再次


这两个变量在哪里使用命名的文件很久以前*.desktopmime*甚至存在。
(令人印象深刻的是:它们实际上被用作通用标准。)
在 Ubuntu 中,系统默认设置似乎是使用sudo update-alternatives --config editor. 它显示了一个用于更改当前关联的菜单。


ENVIRONMENTman visudo

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set
Run Code Online (Sandbox Code Playgroud)

  • 它适用于`sudo -E visudo` - 这当然应该在答案中,对。 (4认同)
  • 你试了吗?默认情况下,sudo 会从它运行的命令的环境中取消设置大多数环境变量。`VISUAL=vim sudo visudo`(以及您建议的变体)对我不起作用,也不应该起作用。不过,`sudo VISUAL=vim visudo` 确实有效。(为了确定,我刚刚再次尝试了这两种方法。)顺便说一下,`VISUAL` 和 `EDITOR` 默认未设置,未设置为 `nano`。`VISUAL` 和 `EDITOR` 不是 `visudo` 在默认配置中选择 `nano` 的机制(除非它咨询它们,发现它们未设置或空白,然后继续前进)。 (2认同)

Muh*_*šić 8

正如描述的这个答案,加

Defaults editor=/path/to/editor
Run Code Online (Sandbox Code Playgroud)

sudoers 文件

注意:这仅在正在编辑的文件包含该Defaults editor=/path/to/editor行或包含包含该行的文件时才有效。

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

  • +1:很好,当我第一次开始这个线程时我没有注意到,谢谢。 (2认同)

Phi*_*ßen 7

如果您从不打算使用 nano,您也可以简单地将其删除。然后系统会默认使用vi/vim。

sudo apt-get purge nano
Run Code Online (Sandbox Code Playgroud)

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

  • `emacs` 和 `vim` 确实愉快地共存并且经常被使用。“nano”就像害虫一样,越早从系统中删除越好。我确实理解有些人可能会觉得舒服,但这个答案是完全有效的。 (3认同)
  • 绝对是最好的答案 (2认同)