Cambia l'editor predefinito in vim per _ sudo systemctl edit [unit-file] _


17

[4.13.12-1-ARCO con gnome3 e gdm su Xorg]

Ho già impostato i miei parametri VISUAL ed EDITOR su vim. Allo stesso modo ho provato SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR nel mio ~ / .bashrc, senza risultati.

Quando si modificano i file di unità in Arch (systemd) tramite

 $ sudo systemctl edit _unit_ 

Mi ritrovo a fissare nano. La vita è troppo breve e voglio vimassolutamente. Come faccio a fare questo ?

Risposte:


13

Stai impostando le variabili per il tuo utente, ma stai eseguendo il systemctlcomando come root ( sudo). Pertanto, le variabili che hai impostato per il tuo utente sono irrilevanti.

Per risolvere questo problema, puoi (ma andare con 1):

  1. Esegui sudocon in -Emodo da esportare l'ambiente corrente:

    sudo -E systemctl edit _unit_
    
  2. Aggiungi la variabile (ti serve solo SYSTEMD_EDITORper questo) ai root ~/.profile:

    export SYSTEMD_EDITOR="/bin/vi" 
    

    Quindi corri con

    sudo -i systemctl edit _unit_ 
    

Infine, tieni presente che devi specificare il percorso completo del tuo editor, non solo il suo nome. Quindi è /bin/vie non vim.


Stavo già lavorando con sudo -E ...dopo aver modificato /root/.bashrc. sudo -i ...Tuttavia, non avevo pensato di eseguire sudo come login shell ( ). Né sono molto soddisfacenti in quanto è necessario ricordare le bandiere corrispondenti, ma hey ... ci sono cose peggiori, immagino ... Comunque (forse è di interesse), confermo che per alcuni di noi: SYSTEMD_EDITOR=/usr/bin/vim; export SYSTEMD_EDITOR(come root) è giusto. Il percorso dipende tutto da come hai viminstallato il tuo pkg in primo luogo. Inoltre, come ho definito PATH per root, vimè abbastanza. Non esiste un solo modo per farlo. Grazie @terdon.
Cbhihe,

1
@cbhihe ah, OK. Ho provato con giusto vime mi sono lamentato ed è per questo che l'ho menzionato. E hey, sono un utente emacs :)
terdon

1
@Cbhihe credimi non è stata una scelta facile. L'ho anche provato usando vim! Mi ci sono voluti tre giorni per chiudere la cosa.
Terdon

22

Primo metodo, puoi aggiungere questa riga a ~/.bashrc:

export SYSTEMD_EDITOR=vim

E quindi sudo visudoe aggiungi questa riga:

Defaults  env_keep += "SYSTEMD_EDITOR"

Avvia la nuova sessione bash per rendere effettive, quindi esegui sudo systemctl edit <foo>come al solito.

Il secondo metodo è usare update-alternatives:

Installa quello che desideri editor, ad es . vim.gtk3:

$ quale editor
l'editor è / usr / bin / editor
$ sudo update-alternatives - installa "$ (quale editor)" editor "$ (quale vim.gtk3)" 15

Quindi scegli il tuo desiderato 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

Il terzo metodo è impostato direttamente EDITORsu runtime:

sudo EDITOR=vim systemctl edit <foo>

Le precedenti sono il primo metodo> terzo metodo> secondo metodo .

Non provare a impostare l'editor "GUI" come geditperché Perché gksu / gksudo o l'avvio di un'applicazione grafica con sudo non funzionano con Wayland? e Gedit utilizza il 100% della CPU durante la modifica dei file


1
Grazie 林果 皞, ma intendevo davvero vim, no gedit.
Cbhihe,

@Cbhihe geditè solo un esempio per dimostrare che anche l'editor di gui funziona, ovviamente puoi usare vimquesta risposta.
林果 皞

1
林 さ ん, hai ragione. In effetti ho implementato la tua soluzione modificando il file sudoers con sudo visudo... Ero troppo veloce nell'accettare la prima risposta. Quello che stavo cercando è esattamente la modifica del /etc/suddoersfile come lo hai proposto. Grazie e scusate per non aver scelto la vostra soluzione. Colpa mia.
Cbhihe,

[AGGIORNAMENTO] Ho modificato la mia risposta per aggiungere un avviso non impostato gedit.
林果 皞

0

Non ho pazienza con Nano e preferisco uccidere una zanzara con un cannone.

Elimina Nano e inserisco un link simbolico per vim al suo posto.

Fatto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.