Zmień domyślny edytor podczas sudo visudo

23

Podczas pracy sudo visudodomyślnym edytorem jest nano.
Chcę to zmienić na vilub vim.

I już vimdomyślny edytor i użyć go jako zamiennik dla geditdo otwartego php, .txt, .c oraz pliki .h, umieszczając vim.desktopplik ~/.local/share/applications/i prawidłowo edycję albo ~/.local/share/applications/mimeapps.listalbo /etc/gnome/defaults.list. Jednak najwyraźniej nie dotyczy to nano.

Jakieś wskazówki?

Cbhihe
źródło
Sprawdziłeś man visudo?
fkraiem
Odkąd to napisałem, dowiedziałem się jeszcze kilku rzeczy - mam nadzieję, że dodam więcej później; Dystrybucje Linuksa traktują to inaczej.
Volker Siegel
Tak i ustawiłem moją env-var VISUAL na vim i „wyeksportowałem” do .bashrc i .bash_profile, a następnie pozyskałem powłokę, ale bezskutecznie. Nawet się wylogował i zalogował w sesji, aby się upewnić.
Cbhihe
2
Dodałem sudo -E visudopóźniej w odpowiedzi, czy próbowałeś tego? -E sprawia, że sudonie usuwa wszystkich zmiennych env. Czyni bo ubuntu ma linię Defaults env_resetw/etc/sudoers
Volker Siegel
Czy próbowałeś też update-alternativesI dodałem?
Volker Siegel

Odpowiedzi:

19

Problemem nie jest to, że nie dotyczy nano, lecz to, że nie dotyczy powłoki:

Wystarczy ustawić VISUALzmienną środowiskową:

export VISUAL=vim

Dodaj to też ~ / .bashrc, aby było trwałe.

Ponieważ wydaje się, że ogólnie używasz vima, ustaw zarówno VISUALi EDITOR:

export VISUAL="vim"
export EDITOR="$VISUAL"

lub więcej poprawnych POSIX

VISUAL="vim" ; export VISUAL
EDITOR="$VISUAL" ; export EDITOR

Zakładam, że nanobyła to wartość jednej lub obu zmiennych.

Aby faktycznie skorzystać z edytora w visudo, musimy sobie poradzić z tym, że sudonormalnie nie zachowuje zmiennych środowiskowych. Opcja to -Ezmienia.

sudo -E visudo

Bez -Etutaj, by skończyć z domyślną wartością nanoponownie


Dwie zmienne były w użyciu na długo przed nazwaniem *.desktoplub mime*istnieniem plików .
(Imponujące jest to, że faktycznie były one używane jako wspólny standard.)
W Ubuntu domyślnie system wydaje się być ustawiony na sudo update-alternatives --config editor. Wyświetla menu umożliwiające zmianę bieżącego powiązania.


Sekcja ENVIRONMENTw man visudo:

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set
Volker Siegel
źródło
1
Próbowałeś? Domyślnie sudowyłącza większość zmiennych środowiskowych ze środowiska dla uruchomionego polecenia. VISUAL=vim sudo visudo(i proponowane odmiany) nie działa dla mnie i nie należy oczekiwać, że zadziała. sudo VISUAL=vim visudojednak działa. (Właśnie próbowałem zarówno ponownie, aby się upewnić.) By the way, VISUALi EDITORsą domyślnie wyłączony, nie ustawiony nano. VISUALi EDITORnie są mechanizmem, za pomocą którego visudodokonuje wyboru nanow domyślnej konfiguracji (z wyjątkiem przypadków, gdy się z nimi konsultuje, stwierdza, że ​​są one rozbrojone lub puste i porusza się dalej).
Eliah Kagan
3
Działa z sudo -E visudo- co z pewnością powinno być w odpowiedzi, prawda.
Volker Siegel
+1 i akceptuję twoją doskonałą odpowiedź, Volker. „Besten Dank!” Nadal dostaję komunikat o błędzie z flagą -E, że nie wolno mi przekazywać zmiennych środowiskowych, ale potem przeszedłem od użytkownika z ograniczonym dostępem do użytkownika z uprawnieniami administratora i bingo! Wszystko działa dobrze.
Cbhihe
Och, cieszę się, że mogę dodać jeszcze jedną rzecz, która może pójść nie tak / może pomóc;) Czy możesz sprawdzić opcje (wiersze z Default) w / etc / sudoers? Myślę, że istnieje opcja, która tego zabrania, ale nie ma jej w moim domyślnym pliku.
Volker Siegel
@VolkerSiegel: Wyobrażam sobie, że odwołujesz się do wartości domyślnej env_reset w / etc / sudoers . Tak jest w moim przypadku.
Cbhihe
8

Jak opisano w tej odpowiedzi , dodaj

Defaults editor=/path/to/editor

do pliku sudoers .

Uwaga: zadziała to tylko wtedy, gdy edytowany plik zawiera Defaults editor=/path/to/editorwiersz lub zawiera plik, który go zawiera.

Na przykład: visudo -f /etc/sudoers.d/my_sudoers_extensiondomyślnie Nano.

Muhamed Huseinbašić
źródło
2
+1: Dobry, i nie zauważyłem go, kiedy zaczynałem ten wątek, dzięki.
Cbhihe,
3

Jeśli nigdy nie planujesz używać nano, możesz go po prostu usunąć. Wtedy system użyje vi / vim jako domyślnego.

sudo apt-get purge nano

Wiem, że nie jest to oficjalna odpowiedź, ale jest to dla mnie jedno z pierwszych poleceń po zainstalowaniu Ubuntu.

Philipp Claßen
źródło
To zdecydowanie kwalifikuje się jako „nekropostacja”, ale hej ... Yr odpowiedź jest interesująca, ponieważ dotyczy Ubuntu. Niektóre inne dystrybucje (w tym ArchLinux) mają tylko edytor (y), które zainstalowałeś (-aś) na pierwszym miejscu, więc nie masz ani pbm, jaki napotkałem w Ubuntu, ani potrzeby uciekania się do sugerowanej miary. W omawianym przypadku (ubuntu + nano + vim) uważam, że wielu może potrzebować opcji edytorów. To prawda, że ​​rzadko widzi się takie osoby emacsi vimaktywnie współistnieją w profilu jednego użytkownika. Jednak nanoi vimzdarzają się razem w naturze ... Keep nano!
Cbhihe,
zdecydowanie najlepsza odpowiedź
botkop
emacsi vimszczęśliwie współistnieją i są stale używane. nanojest jak szkodnik, im szybciej zostanie usunięty z systemu, tym lepiej. Rozumiem, że niektórym ludziom może być wygodnie, ale ta odpowiedź jest całkowicie poprawna.
mementum