Normalerweise setze ich sowohl Umgebungsvariablen VISUAL
als auch EDITOR
Umgebungsvariablen auf dasselbe, aber was ist der Unterschied? Warum sollte ich sie anders einstellen? Warum sollte ich mich beim Entwickeln von Apps VISUAL
vorher entscheiden EDITOR
oder umgekehrt?
quelle
$VISUAL
als Shell-Snippet, an das sie den (in Shell-Anführungszeichen stehenden) Dateinamen anhängen, aber einige behandeln ihn als den Namen einer ausführbaren Datei, in der sie möglicherweise suchen oder nicht$PATH
. Daher ist es am besten,VISUAL
(undEDITOR
) den vollständigen Pfad zu einer ausführbaren Datei anzugeben (die ein Wrapper-Skript sein kann, wenn Sie z. B. Optionen möchten).ed
und ähnlichen Zeiten sind sie nicht sehr populär, daher glaube ich, dass es in Ordnung ist, sie einfach zu ignorierenVISUAL
und zu verwendenEDITOR
.C-x C-e
in der Bash. Sehr praktisch.EDITOR
reicht zBgit
unter Ubuntu 12.04 nicht aus. OhneVISUAL
gesetzt zu werdengit
ignoriertEDITOR
und nur benutztnano
(die standardmäßig kompiliert, denke ich).ed
. Als Editoren mit GUIs entstanden - und mit GUI meine ich CLI-GUI (vim, emacs usw.) und nicht Desktop-GUI -, änderte sich der Bearbeitungsprozess dramatisch, sodass eine andere Variable erforderlich wurde. In diesem Kontext sind die GUI-Editoren der CLI-Benutzeroberfläche und der Desktop-Umgebung mehr oder weniger identisch, sodass Sie VISUAL auf entweder festlegen können. EDITOR ist jedoch für einen grundlegend anderen Workflow gedacht. Das ist natürlich alles historisch. Heutzutage benutzt niemand mehr Ed.Die akzeptierte Antwort ist wahrscheinlich eine gute, kurze Behandlung, aber dies wird ein Versuch sein, tiefer zu gehen, wenn die Unterscheidung zwischen VISUAL und EDITOR noch wichtig sein könnte (aufbauend auf Adam Katz 'Antwort ).
Die POSIX-Spezifikation unterscheidet weiterhin zwischen Editoren für den visuellen Modus und Zeileneditoren. Dies war wirklich wichtig in den Tagen, als die Cursorpositionierung über seriellen Verbindungen schwierig war (insbesondere aufgrund der Geschwindigkeit der seriellen Verbindung). Der Wikipedia-Artikel für vi gibt einige nützliche Hintergrundinformationen zur Unterscheidung zwischen vi (ein visueller Modus-Editor) und ex (ein Zeileneditor). Wenn Sie die Recherche gründlich genug durchgreifen , finden Sie in der "ex" -Spezifikation den Abschnitt "RATIONALE" , der einen Grund für die noch vorhandene Unterscheidung in der Spezifikation angibt:
Ich habe dies nicht gebraucht, seit ich mein 300-Baud-Modem aufgegeben habe, aber ich kann mir vorstellen, dass Menschen, die langsame serielle Leitungen für die Verbindung mit eingebetteten Systemen (und / oder über wirklich gefährliche Verbindungen) verwenden, es immer noch zu schätzen wissen, einen bevorzugten Leitungsmodus zu haben Editor unterscheidet sich von einem "visuellen" Editor wie vi. VT100-artige Terminalcodes über eine verlustbehaftete, verzögerte, schmale Verbindung können in begrenzten Anwendungen "aufgebläht" sein.
Für den Rest von uns scheint die "richtige" Antwort zu sein, "beide als Ihren bevorzugten Editor festlegen". Es mag in Ordnung sein, diese Unterscheidung für einen lokalen / grafischen Editor (z. B. Sublime oder gvim) gegen einen Terminal-Fenster-Editor (z. B. vi oder emacs) zu wählen, aber es gibt wahrscheinlich eine Vielzahl von Gründen, warum dies möglicherweise nicht so funktioniert, wie erhofft .
quelle
Einige Tools akzeptieren nur EDITOR, zum Beispiel die in fc eingebaute Shell :
quelle
Ich bin zu dem Schluss gekommen, dass
$VISUAL
es sich um eine grafische Darstellung und$EDITOR
eine Befehlszeile handelt. Wenn nicht definiert, alle suchend ,$VISUAL
sollten dann versuchen ,$EDITOR
nächste.( Zitierweise erforderlich: Ich würde gerne die richtige Dokumentation erhalten, vielleicht eine Manpage oder eine POSIX-Spezifikation?)
Im Moment habe ich Sachen wie diese in meinem
~/.bashrc
und~/.zshrc
:gvim
without-f
funktioniert nicht mit Programmen, die erwarten, dass sie auf Ihre Änderungen reagieren. Dies beinhaltet definitivsudoeditor
(sudo -e
).Dies kann fehlschlagen, wenn der Pfad zu vim Leerzeichen enthält. Wenn das ein Problem ist, installieren Sie es entweder ordnungsgemäß oder berücksichtigen Sie Symlinks wie
/usr/local/bin/gvim
quelle
$VISUAL
hängt davon ab, ob Sie ein Terminal haben, mit dem Sie den Cursor positionieren können, und nicht, ob Sie über ein Fenstersystem verfügen.$DISPLAY
, aber das ist gut zu wissen.Da es scheinbar keine Umgebungen gibt, in denen vi oder ähnliches fehlschlagen würde, habe ich VISUAL auf etwas eingestellt, das ein X-DISPLAY benötigt, und EDITOR auf ex.
Meistens scheint mir das nur Probleme zu bereiten, wenn ein Programm VISUAL nicht verwendet.
quelle