将默认编辑器更改为 vim for _ sudo systemctl edit [unit-file] _

将默认编辑器更改为 vim for _ sudo systemctl edit [unit-file] _

[4.13.12-1-ARCH 在 Xorg 上使用 gnome3 和 gdm]

我已经将 VISUAL 和 EDITOR env-vars 设置为vim.同样,我在 ~/.bashrc 中尝试过SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR ,但无济于事。

当修改 Arch (systemd) 中的单元文件时

 $ sudo systemctl edit _unit_ 

我发现自己盯着nano。生命太短暂,我vim无论如何都要。我该怎么做呢 ?

答案1

第一种方法,您可以将此行添加到~/.bashrc

export SYSTEMD_EDITOR=vim

然后sudo visudo添加这一行:

Defaults  env_keep += "SYSTEMD_EDITOR"

启动新的 bash 会话以生效,然后sudo systemctl edit <foo>照常运行。

第二种方法是使用update-alternatives

安装你想要的editor,例如vim.gtk3

$ 哪个编辑器
编辑器是/usr/bin/editor
$ sudo update-alternatives --install "$(which editor)" editor "$(which vim.gtk3)" 15

然后选择您想要的editor

$ sudo update-alternatives --config editor
There are 7 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/vim.gtk3    50        auto mode
  1            /bin/ed             -100       manual mode
* 2            /bin/nano            40        manual mode
  3            /usr/bin/code        0         manual mode
  4            /usr/bin/gedit       5         manual mode
  5            /usr/bin/vim.basic   30        manual mode
  6            /usr/bin/vim.gtk3    50        manual mode
  7            /usr/bin/vim.tiny    15        manual mode

Press <enter> to keep the current choice[*], or type selection number: 6
update-alternatives: using /usr/bin/vim.gtk3 to provide /usr/bin/editor (editor) in manual mode

第三种方法是直接设置EDITOR运行时:

sudo EDITOR=vim systemctl edit <foo>

优先级是第一种方法 > 第三种方法 > 第二种方法

不要尝试设置“GUI”编辑器,例如gedit因为为什么 gksu/gksudo 或使用 sudo 启动图形应用程序不能与 Wayland 配合使用?Gedit 在编辑文件时使用 100% 的 CPU

答案2

您正在为自己的用户设置变量,但systemctl以 root ( sudo) 身份运行命令。因此,您为用户设置的变量是无关紧要的。

要解决此问题,您可以(但选择 1):

  1. 运行sudoso-E它会导出当前环境:

    sudo -E systemctl edit _unit_
    
  2. 将变量(您只需要SYSTEMD_EDITOR这个)添加到 root 的~/.profile

    export SYSTEMD_EDITOR="/bin/vi" 
    

    然后运行

    sudo -i systemctl edit _unit_ 
    

最后,请注意,您需要指定编辑器的完整路径,而不仅仅是其名称。所以是/bin/vi又不是vim

答案3

我使用 shell 别名:

sc='sudo SYSTEMD_EDITOR=/bin/vi /usr/bin/systemctl'

然后只需:

sc edit service-name

systemctl它对于通常避免在 等情况下键入 9 个字符中的 7 个也很有用restart

答案4

对我有用的唯一方法是:

  • 根 shell (susudo -i),设置SYSTEMD_EDITOR=/usr/bin/vim,然后systemctl edit <unit>
  • 设置SYSTEMD_EDITOR,然后sudo -E systemctl edit <unit>
  • sudo SYSTEMD_EDITOR=/usr/bin/vim systemctl edit <unit>

我尝试为 bash 和 zsh 设置EDITORand VISUALSYSTEMD_EDITOR为用户和 root 设置,但它只能在 root shell 中工作,在 后设置变量sudo,或使用 sudo 与-E

我还编辑了 sudoers ( sudo visudo) 添加:尽管如此,我发现即使显示了 vim,
Defaults env_keep += "SYSTEMD_EDITOR"
该变量也没有列出。sudo systemctl show-environmentsudo echo $SYSTEMD_EDITOR

我使用以下命令设置变量:
sudo systemctl set-environment SYSTEMD_EDITOR=/usr/bin/vim
并使用 进行确认sudo systemctl show-environment

即使在那之后,唯一对我有用的方法就是顶部列出的方法。

相关内容