Zmień domyślny edytor na vim dla _ sudo systemctl edit [unit-file] _


18

[4.13.12-1-ARCH z gnome3 i gdm na Xorg]

Już ustawiłem moje środowisko VISUAL i EDITOR na vim. Podobnie próbowałem SYSTEMD_EDITOR="vim"; export SYSTEMD_EDITOR w moim ~ / .bashrc, bezskutecznie.

Podczas modyfikowania plików jednostek w Arch (systemd) przez

 $ sudo systemctl edit _unit_ 

Patrzę na siebie nano. Życie jest za krótkie i na pewno chcę vim. Jak mam to zrobic ?

Odpowiedzi:


13

Ustawiasz zmienne dla własnego użytkownika, ale uruchamiasz systemctlkomendę jako root ( sudo). Dlatego zmienne ustawione dla użytkownika są nieistotne.

Aby to naprawić, możesz albo (ale iść z 1):

  1. Uruchom sudoz, -Ewięc eksportuje bieżące środowisko:

    sudo -E systemctl edit _unit_
    
  2. Dodaj zmienną (potrzebujesz tylko SYSTEMD_EDITORtego) do root'a ~/.profile:

    export SYSTEMD_EDITOR="/bin/vi" 
    

    Następnie biegnij z

    sudo -i systemctl edit _unit_ 
    

Na koniec pamiętaj, że musisz podać pełną ścieżkę do edytora, a nie tylko jego nazwę. Tak jest /bin/vii nie vim.


Pracowałem już sudo -E ...po modyfikacji /root/.bashrc. sudo -i ...Jednak nie myślałem o uruchomieniu sudo jako powłoki logowania ( ). Żadne z nich nie jest bardzo satysfakcjonujące, ponieważ musisz pamiętać odpowiednie flagi, ale hej ... są gorsze rzeczy, myślę ... Nadal (może to interesujące), potwierdzam, że dla niektórych z nas: SYSTEMD_EDITOR=/usr/bin/vim; export SYSTEMD_EDITOR(jako root) jest dobrze. Ścieżka zależy od tego, w jaki sposób masz vimzainstalowane pkg na pierwszym miejscu. Plus, jak zdefiniowałem PATH dla roota, vimwystarczy. Nie ma tylko jednego sposobu, aby to zrobić. Dzięki @terdon.
Cbhihe,

1
@cbhihe ah, OK. Próbowałem właśnie vimi narzekałem, dlatego o tym wspomniałem. I hej, jestem użytkownikiem emacsa :)
terdon

1
@Chihihe uwierz mi, że nie był to łatwy wybór. Nawet przetestowałem to za pomocą vim! Zamknięcie tego zajęło mi trzy dni.
terdon

23

Pierwszą metodą możesz dodać tę linię do ~/.bashrc:

export SYSTEMD_EDITOR=vim

A następnie sudo visudododaj tę linię:

Defaults  env_keep += "SYSTEMD_EDITOR"

Rozpocznij nową sesję bash, aby zastosować, a następnie uruchom sudo systemctl edit <foo>jak zwykle.

Drugą metodą jest użycie update-alternatives:

Zainstaluj żądane editor, np . vim.gtk3:

$ który edytor
edytorem jest / usr / bin / editor
$ sudo update-alternatives --install "$ (który edytor)" edytor "$ (który vim.gtk3)" 15

Następnie wybierz żądane 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

Trzecią metodą jest bezpośrednie ustawienie EDITORw czasie wykonywania:

sudo EDITOR=vim systemctl edit <foo>

Pierwszeństwo mają pierwsza metoda> trzecia metoda> druga metoda .

Nie próbuj ustawiać edytora „GUI”, geditponieważ np. Dlaczego nie uruchomisz gksu / gksudo lub nie uruchomisz aplikacji graficznej z sudo w Wayland? a Gedit zużywa 100% procesora podczas edycji plików


1
Dzięki 林果 皞, ale naprawdę vimnie miałem na myśli gedit.
Cbhihe,

@Chihihe geditto tylko przykład, który udowodnił, że działa nawet edytor GUI, oczywiście możesz użyć vimtej odpowiedzi.
林果 皞

1
You're さ ん, masz rację. W rzeczywistości zaimplementowałem swoje rozwiązanie, edytując plik sudoers za pomocą sudo visudo... Zbyt szybko zaakceptowałem pierwszą odpowiedź. To, czego szukałem, to dokładnie taka modyfikacja /etc/suddoerspliku, jaką zaproponowałeś. Dziękuję i przepraszam, że nie wybrałem swojego rozwiązania. Mój błąd.
Cbhihe,

[AKTUALIZACJA] Zedytowałem odpowiedź, aby dodać porada nie ustawiać gedit.
林果 皞

0

Nie mam cierpliwości do Nano i wolę zabić komara armatą.

Usuwam Nano i umieszczam dowiązanie symboliczne do vima na jego miejscu.

Gotowy.


0

Używam aliasu powłoki:

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

Więc po prostu:

sc edit service-name

Jest to również przydatne do ogólnego unikania pisania 7 z 9 znaków systemctlw przypadkach takich jak restartitp.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.