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


18

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

我已经将VISUAL和EDITOR env-vars设置为vim。同样,我确实尝试SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR 了〜/ .bashrc,但没有成功。

通过以下方式在Arch(systemd)中修改单位文件时

 $ sudo systemctl edit _unit_ 

我发现自己凝视着nano。生命太短暂了,我一定要vim。我该怎么做呢 ?

Answers:


13

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

要解决此问题,您可以选择其中一个(但请选择1):

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

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

    export SYSTEMD_EDITOR="/bin/vi" 
    

    然后运行

    sudo -i systemctl edit _unit_ 
    

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


sudo -E ...修改后,我已经在使用/root/.bashrc。但是,没有想到将sudo作为登录shell(sudo -i ...)运行。两者都不尽如人意,因为您需要记住相应的标志,但是,嘿……我想……还有更糟的事情,不过(也许很有趣),我确认对于我们中的某些人:(SYSTEMD_EDITOR=/usr/bin/vim; export SYSTEMD_EDITOR作为根)对。路径都取决于您如何将yr vimpkg安装在第一位置。再加上我为root定义的PATH,vim就足够了。不仅有一种方法可以做到这一点。谢谢@terdon。
Cbhihe

1
@cbhihe啊,好。我尝试用公正vim,它抱怨这就是为什么我提到它。嘿,我是emacs用户:)
terdon

1
@Cbhihe相信我,这不是一个容易的选择。我什至用来测试vim!我花了三天时间把事情关了。
terdon

23

第一种方法,您可以将此行添加到~/.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“ $(哪个编辑器)”编辑器“ $(哪个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因为为什么不与Wayland一起使用gksu / gksudo或使用sudo启动图形应用程序?Gedit的使用100%的CPU,而编辑文件


1
谢谢林果皞,但我的意思vim不是gedit
Cbhihe

@Cbhihe gedit只是证明gui编辑器正在工作的一个示例,当然您可以使用vim此答案。
林果皞2017年

1
林さん,你是对的。实际上,我通过使用以下方式编辑sudoers文件来实现yr解决方案sudo visudo:我太快接受了第一个响应。我一直在寻找的正是/etc/suddoers您建议的文件修改。感谢您,不选择您的解决方案,对不起。我的错。
Cbhihe

[更新]我编辑了答案以添加未设置的建议gedit
林果皞

0

我对Nano的耐心为零,更喜欢用大炮杀死一只蚊子。

我删除Nano并在其中放置一个指向vim的符号链接。

做完了


0

我使用shell别名:

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

然后:

sc edit service-name

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

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.