Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _

17

[4.13.12-1-ARCH com gnome3 e gdm no Xorg]

Já defini meus envios VISUAL e EDITOR para vim. Da mesma forma, tentei SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR no meu ~ / .bashrc, sem sucesso.

Ao modificar arquivos de unidades no Arch (systemd) via

 $ sudo systemctl edit _unit_ 

Eu me vejo olhando nano. A vida é muito curta e eu quero vimde todos os modos. Como eu faço isso ?

Cbhihe
fonte

Respostas:

13

Você está configurando as variáveis ​​para seu próprio usuário, mas está executando o systemctlcomando como root ( sudo). Portanto, as variáveis ​​que você definiu para o usuário são irrelevantes.

Para corrigir isso, você pode (mas use 1):

  1. Executar sudocom -Epara que ele exporta o ambiente atual:

    sudo -E systemctl edit _unit_
    
  2. Adicione a variável (você só precisa SYSTEMD_EDITORdisso) à raiz ~/.profile:

    export SYSTEMD_EDITOR="/bin/vi" 
    

    Então corra com

    sudo -i systemctl edit _unit_ 
    

Por fim, observe que você precisa especificar o caminho completo para o seu editor, não apenas o nome. Então é /bin/vie não vim.

terdon
fonte
Eu já estava trabalhando sudo -E ...depois de ter modificado /root/.bashrc. sudo -i ...No entanto, não tinha pensado em executar o sudo como shell de login ( ). Também não são muito satisfatórios, pois você precisa se lembrar das bandeiras correspondentes, mas ei ... há coisas piores, eu acho ... Ainda assim (talvez seja interessante), confirmo que para alguns de nós: SYSTEMD_EDITOR=/usr/bin/vim; export SYSTEMD_EDITOR(como root) é certo. O caminho depende de como você viminstalou o ano do pkg em primeiro lugar. Além disso, como eu defini PATH para root, vimé suficiente. Não há apenas uma maneira de fazê-lo. Obrigado @terdon.
Cbhihe
1
@ cbhihe ah, ok. Eu tentei com apenas vime reclamou e é por isso que eu mencionei. E ei, eu sou um usuário do emacs :)
terdon
1
@ CBhihe acredite em mim, não foi uma escolha fácil. Eu até testei usando vim! Levei três dias para fechar a coisa.
terdon
21

Primeiro método, você pode adicionar esta linha a ~/.bashrc:

export SYSTEMD_EDITOR=vim

E então sudo visudoe adicione esta linha:

Defaults  env_keep += "SYSTEMD_EDITOR"

Inicie uma nova sessão do bash para entrar em vigor e execute sudo systemctl edit <foo>como de costume.

O segundo método é o uso update-alternatives:

Instale o desejado editor, por exemplo vim.gtk3:

$ qual editor
O editor é / usr / bin / editor
$ sudo update-alternative --install "$ (qual editor)" editor "$ (qual vim.gtk3)" 15

Em seguida, escolha o desejado 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

O terceiro método é definido diretamente EDITORno tempo de execução:

sudo EDITOR=vim systemctl edit <foo>

A precedência é o primeiro método> terceiro método> segundo método .

Não tente configurar o editor "GUI", como geditporque Por que o gksu / gksudo ou o lançamento de um aplicativo gráfico com o sudo não funciona com o Wayland? e o Gedit usa 100% da CPU ao editar arquivos

林果 皞
fonte
1
Obrigado, mas eu realmente quis dizer vim, não gedit.
Cbhihe
@ CBhihe gedité apenas um exemplo para provar que mesmo o editor de GUI está funcionando, é claro que você pode usar vimcom esta resposta.
林果皞
1
Você está certo. Na verdade, eu implementei a solução yr editando o arquivo sudoers com sudo visudo... Eu fui muito rápido em aceitar a primeira resposta. O que eu estava procurando era exatamente a modificação do /etc/suddoersarquivo como você o propôs. Obrigado e desculpe por não escolher a solução do ano. Foi mal.
Cbhihe
[UPDATE] Editei minha resposta para adicionar avisos não definidos gedit.
林果皞
0

Não tenho paciência com Nano e prefiro matar um mosquito com um canhão.

Excluo o Nano e coloco um link simbólico para vim em seu lugar.

Feito.

Daniel Baker
fonte