当前位置: 首页>>技术教程>>正文


vim – sudo visudo 时更改默认编辑器

, , ,

问题描述

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

我已经将 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 一样,设置 VISUALEDITOR

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

这两个变量早在名为 *.desktopmime* 的文件甚至存在之前就已使用。\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。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13625.html,未经允许,请勿转载。