sudo visudo时更改默认编辑器


23

这样做时sudo visudo,默认编辑器是nano
我想将其更改为vivim

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

有什么线索吗?


你检查了man visudo吗?
fkraiem 2014年

自编写以来,我发现了更多东西-希望以后再添加;Linux发行版以不同的方式处理它。
Volker Siegel 2014年

是的,我将env-var VISUAL设置为vim并在.bashrc和.bash_profile中“导出”,然后获取了外壳程序,但无济于事。甚至注销并重新登录会话以确保。
Cbhihe 2014年

2
sudo -E visudo在答案的后面加上了,您尝试过吗?-E sudo不会删除所有的环境变量。这样做是因为ubuntu排Defaults env_reset了队/etc/sudoers
Volker Siegel 2014年

另外,您是否尝试过update-alternatives我也添加的内容?
Volker Siegel

Answers:


19

问题不是它不适用于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再次获得默认值


这两个变量在哪里使用命名的文件很久以前*.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

1
你试过了吗?默认情况下,sudo将从运行该命令的环境中取消设置大多数环境变量。VISUAL=vim sudo visudo(以及您建议的变体)对我不起作用,也不应该期望它起作用。sudo VISUAL=vim visudo确实可以。(当然,我只是再次尝试了两者。)顺便说一句,VISUAL并且EDITOR默认情况下未设置,未设置为nanoVISUALEDITOR不是在默认配置中进行visudo选择的机制nano(除非它查询了它们,发现它们未设置或为空白,然后继续前进)。
伊利亚·卡根

3
它适用于sudo -E visudo-肯定应该在答案中,对。
Volker Siegel

+1,我同意您的出色回答,沃尔克。“贝斯顿·丹克!” 我仍然收到带有-E标志的错误消息,关于不允许传递环境变量,但是随后我从受限制的访问用户变成具有admin-privilege和bingo的用户!一切正常。
Cbhihe 2014年

哦,我很乐意补充一点可能出错的问题/可以提供帮助;)您可以检查Default/ etc / sudoers中的选项(带有的行)吗?我认为有一个选项禁止这样做,但该文件不在我的默认文件中。
Volker Siegel 2014年

@VolkerSiegel:我想您是在/ etc / sudoers中引用env_reset默认值。就我而言,它就是这样设置的。
Cbhihe

8

正如描述的这个答案,加

Defaults editor=/path/to/editor

sudoers文件

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

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


2
+1:好,我第一次启动该线程时没有注意到它,谢谢。
Cbhihe

3

如果您从未打算使用nano,也可以将其删除。然后,系统将使用vi / vim作为默认值。

sudo apt-get purge nano

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


这绝对符合“死角发布”的条件,但是,嘿...您的答案很有趣,因为它与Ubuntu有关。其他一些发行版(其中包括ArchLinux)仅在第一位置安装了编辑器,因此您既没有我在Ubuntu上遇到的pbm,也没有必要诉诸于您建议的措施。就目前的情况(ubuntu + nano + vim)而言,我认为许多人可能需要编辑器方面的选项。的确,很少有人会看到彼此喜欢的东西emacsvim积极地共存于任何一个用户的个人资料中。但是nanovim确实在野外一起发生...保持nano
Cbhihe

绝对是最佳答案
botkop

emacsvim愉快地共存并不断使用。nano就像害虫一样,越早从系统中清除它越好。我确实知道有些人会觉得很舒服,但是这个答案是完全正确的。
备忘录
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.