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

Cbh*_*ihe 41 vim editors systemd

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

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

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

 $ sudo systemctl edit _unit_ 
Run Code Online (Sandbox Code Playgroud)

我发现自己盯着nano. 人生苦短,我vim无论如何都想要。我该怎么做呢 ?

Fru*_*uit 47

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

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

然后sudo visudo并添加这一行:

Defaults  env_keep += "SYSTEMD_EDITOR"
Run Code Online (Sandbox Code Playgroud)

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

第二种方法是使用update-alternatives

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

$哪个编辑器
编辑器是 /usr/bin/editor
$ sudo update-alternatives --install "$(which 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
Run Code Online (Sandbox Code Playgroud)

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

sudo EDITOR=vim systemctl edit <foo>
Run Code Online (Sandbox Code Playgroud)

优先顺序是第一种方法>第三种方法>第二种方法

不要尝试设置“界面”编辑器,例如gedit,因为为什么不gksu / gksudo或推出与韦兰须藤工作的图形应用程序吗?Gedit 在编辑文件时使用 100% 的 CPU


ter*_*don 22

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

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

  1. 运行sudo-E导出当前环境:

    sudo -E systemctl edit _unit_
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将变量(你只需要SYSTEMD_EDITOR这个)添加到 root 的~/.profile

    export SYSTEMD_EDITOR="/bin/vi" 
    
    Run Code Online (Sandbox Code Playgroud)

    然后运行

    sudo -i systemctl edit _unit_ 
    
    Run Code Online (Sandbox Code Playgroud)

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


Tom*_*ale 8

我使用 shell 别名:

sc='sudo SYSTEMD_EDITOR=/bin/vi /usr/bin/systemctl'
Run Code Online (Sandbox Code Playgroud)

然后只需:

sc edit service-name
Run Code Online (Sandbox Code Playgroud)

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