如何将 visudo 编辑器从 nano 更改为 vim?

ded*_*max 168 vim editor command-line nano visudo

当我使用 时visudo,它总是用nano编辑器打开它。如何将编辑器更改为vim?

ded*_*max 250

类型 sudo update-alternatives --config editor

您将收到如下所示的文本。

There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number: 3
Run Code Online (Sandbox Code Playgroud)

查找vim.basicvim.tiny选择编号。输入它并按回车键。下次打开visudo编辑器时vim

  • `vim.basic` 和 `vim.tiny` 有什么区别? (14认同)
  • http://askubuntu.com/questions/483308/what-are-the-differences-between-vim-basic-and-vim-tiny 可能会回答你。也检查一下 http://askubuntu.com/questions/104138/what-features-does-vim-tiny-have (2认同)
  • 如果您不想永久更改配置,可以使用 `sudo EDITOR=vim visudo` 方法(请参阅另一个答案 [下面](https://askubuntu.com/a/539265/323249))。 (2认同)

Rma*_*ano 50

如果您只想让您的用户默认使用不同的编辑器,请添加

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

在您的.profile(或任何地方,如果使用不同于 bash 的 shell,您保留启动环境)。注销,登录,检查变量是否设置:

[romano:~] % env | grep EDI
EDITOR=vim
Run Code Online (Sandbox Code Playgroud)

现在所有调用编辑器(并且编写得很好)的程序都将默认vim为您的用户使用。

正如@EliahKagan(谢谢!)在评论中所注意到的,这不适用于visudo:因为你应该使用它来调用它sudo,当你这样做时

sudo visudo
Run Code Online (Sandbox Code Playgroud)

sudo命令将在提升权限之前清理(读取:删除)大多数环境变量——这是一件好事。所以变化不会渗透到visudo. 为了让它继续工作,你必须这样称呼它:

sudo EDITOR=vim visudo
Run Code Online (Sandbox Code Playgroud)

最后,正如此处所暗示的,您还可以在/etc/sudoers靠近顶部的文件中添加一行,内容如下:

Defaults editor=/usr/bin/vim 
Run Code Online (Sandbox Code Playgroud)

警告:修改sudoers配置时,请保持终端打开,其中包含 root shell(使用sudo -i)。你永远不知道,而且你很容易被锁定在 root 之外。

  • 你试过这个吗?在将 `EDITOR`(或 `VISUAL`)设置为 `vim` 并导出它之后运行 `sudo visudo` 不会——也不应该期望——导致使用 `vim` 而不是 `nano` 作为 `visudo`编辑。默认情况下,`sudo` 会为其运行的命令重置大多数环境变量。只保留了一小部分。`EDITOR` 和 `VISUAL` 不是。因此,在 `export EDITOR=vim` 之后,对于 `sudo visudo` 启动的 `visudo` 进程,`EDITOR` 仍然不会被设置为 `vim`。`EDITOR=vim sudo visudo` 做同样的事情,因此也不起作用。`sudo EDITOR=vim visudo` 确实有效。 (8认同)