Ändern Sie den Standard-Editor bei sudo visudo


23

Wenn tun sudo visudo, ist der Standardeditor nano.
Ich möchte es in vioder ändern vim.

Ich habe bereits vimden Standardeditor erstellt und benutze ihn als Ersatz für geditdas Öffnen von PHP-, TXT-, C- und H-Dateien, indem ich eine vim.desktopDatei in einem der Ordner platziere ~/.local/share/applications/und sie entweder ~/.local/share/applications/mimeapps.listoder richtig bearbeite /etc/gnome/defaults.list. Dies gilt jedoch anscheinend nicht für nano.

Irgendeine Ahnung ?


Hast du nachgesehen man visudo?
Fkraiem

Seit ich es geschrieben habe, habe ich einige weitere Dinge herausgefunden - ich hoffe, dass ich später mehr hinzufügen kann; Die Linux-Distributionen gehen anders damit um.
Volker Siegel

Ja und ich habe mein env-var VISUAL auf vim gesetzt und in .bashrc und in .bash_profile "exportiert" und dann die Shell bezogen, aber ohne Erfolg. Auch abgemeldet und in der Sitzung neu angemeldet, um sicherzustellen.
Cbhihe

2
Ich fügte das sudo -E visudospäter in der Antwort hinzu, hast du das versucht? Mit -E werden sudonicht alle Umgebungsvariablen entfernt. Es tut, weil Ubuntu eine Linie Defaults env_resetin hat/etc/sudoers
Volker Siegel

Also, hast du das probiert, das update-alternativesich auch hinzugefügt habe?
Volker Siegel

Antworten:


19

Das Problem ist nicht, nanodass es nicht auf die Shell zutrifft , sondern dass es nicht auf die Shell zutrifft:

Setzen Sie einfach die VISUALUmgebungsvariable:

export VISUAL=vim

Fügen Sie auch dieses ~ / .bashrc hinzu, um es dauerhaft zu machen.

Da Sie vim im Allgemeinen zu verwenden scheinen, setzen Sie sowohl VISUALals auch EDITOR:

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

oder mehr POSIX-korrekt

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

Ich nehme an, nanowar der Wert einer oder beider Variablen.

Um den Editor in visudo tatsächlich nutzen zu können, müssen wir damit umgehen, dass sudodie Umgebungsvariablen normalerweise nicht beibehalten werden . Die Option -Eändert das.

sudo -E visudo

Ohne das -Ehier würden Sie mit einem Standard von nanowieder enden


Die beiden Variablen wurden lange vor der Benennung *.desktopoder mime*Existenz von Dateien verwendet .
(Und das Beeindruckende ist: Sie wurden tatsächlich als gemeinsamer Standard verwendet.)
In Ubuntu scheint der Systemstandard mit festgelegt zu sein sudo update-alternatives --config editor. Es zeigt ein Menü zum Ändern der aktuellen Zuordnung.


Siehe Abschnitt ENVIRONMENTin man visudo:

  VISUAL           Invoked by visudo as the editor to use

  EDITOR           Used by visudo if VISUAL is not set

1
Hast Du es versucht? Standardmäßig sudowerden die meisten Umgebungsvariablen für den ausgeführten Befehl aus der Umgebung entfernt. VISUAL=vim sudo visudo(und die Variationen, die Sie vorschlagen) funktionieren bei mir nicht und sollten auch nicht funktionieren. sudo VISUAL=vim visudofunktioniert aber. (Ich habe gerade beide erneut versucht, um sicherzugehen.) Übrigens, VISUALund EDITORsind standardmäßig nicht gesetzt, nicht gesetzt auf nano. VISUALund EDITORsind nicht der Mechanismus , durch den visudowählt nanoin der Standardkonfiguration (ausgenommen , soweit sie sie konsultiert, findet sie sind nicht gesetzt oder leer ist , und bewegt sich weiter).
Eliah Kagan

3
Es funktioniert mit sudo -E visudo- was sicherlich in der Antwort stimmen sollte.
Volker Siegel

+1 und ich akzeptiere deine ausgezeichnete Antwort, Volker. "Besten Dank!" Ich habe immer noch eine Fehlermeldung mit dem Flag -E erhalten, dass Umgebungsvariablen nicht weitergegeben werden dürfen, aber dann habe ich von einem Benutzer mit eingeschränktem Zugriff auf einen Benutzer mit Administratorrechten und Bingo geklagt! Alles funktioniert gut.
Cbhihe

Oh, ich bin froh, noch eine Sache hinzuzufügen, die schief gehen kann / helfen kann;) Könnten Sie die Optionen (Zeilen mit Default) in Ihren / etc / sudoers überprüfen? Ich denke, es gibt eine Option, die das verbietet, aber nicht in meiner Standarddatei war.
Volker Siegel

@VolkerSiegel: Ich stelle mir vor, dass Sie sich auf den env_reset- Standard in / etc / sudoers beziehen . Es ist genau so in meinem Fall eingestellt.
Cbhihe

8

Wie in beschrieben diese Antwort , fügen

Defaults editor=/path/to/editor

in die sudoers-Datei .

Hinweis: Dies funktioniert nur, wenn die zu bearbeitende Datei die Defaults editor=/path/to/editorZeile enthält oder eine Datei enthält, die sie enthält.

Zum Beispiel: visudo -f /etc/sudoers.d/my_sudoers_extensionStandardmäßig Nano.


2
+1: Gut, und ich hatte es nicht bemerkt, als ich diesen Thread zum ersten Mal gestartet habe, danke.
Cbhihe

3

Wenn Sie nie vorhaben, Nano zu verwenden, können Sie es auch einfach entfernen. Das System verwendet dann standardmäßig vi / vim.

sudo apt-get purge nano

Ich weiß, dass es nicht die offizielle Antwort ist, aber es ist einer der ersten Befehle für mich nach der Installation von Ubuntu.


Dies wird definitiv als "Necroposting" bezeichnet, aber hey ... Ihre Antwort ist interessant, da es sich um Ubuntu handelt. Einige andere Distributionen (unter anderem ArchLinux) haben nur den / die Editor (en), den / die Sie an erster Stelle installiert haben. Sie haben also weder die PBM, die ich mit Ubuntu erlebt habe, noch die Notwendigkeit, auf die von Ihnen vorgeschlagene Maßnahme zurückzugreifen. Im vorliegenden Fall (Ubuntu + Nano + Vim) habe ich das Gefühl, dass viele möglicherweise Optionen in Bezug auf die Editoren benötigen. Es ist wahr, dass man selten jemanden sieht, der in seinem Profil ähnlich ist emacsund vimaktiv mit ihm koexistiert. Aber nanound vimgemeinsam in freier Wildbahn passieren ... Keep nano!
Cbhihe

Auf jeden Fall die beste Antwort
botkop

emacsund vimgerne koexistieren und werden ständig genutzt. nanoist genau wie der Schädling, je eher er aus dem System entfernt wird, desto besser. Ich verstehe, dass manche Leute es als angenehm empfinden, aber diese Antwort ist absolut richtig.
Andenken
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.