Ich suchte nach einem Befehl, der hoffentlich den bevorzugten Texteditor des aktuellen Benutzers öffnen würde, da ich einige Anweisungen mit Befehlen in einem Blog schreibe. Ich hatte einen Befehl wie edit
erwartet und editor
gefunden. Für mich wurde vim im Terminal gestartet, was in der Nähe von was liegt Ich wollte, ich benutze vim-gtk. Ich suchte nach einer Möglichkeit, den Editor dazu zu bringen, vim-gtk zu verwenden, und fand diese Frage, die eine Umgebungsvariable, aber ich bin nicht sicher, ob dies überhaupt mit dem Befehl editor
zusammenhängt. Ich habe man editor
versucht , aber das hat gerade die vim-Manpage aufgerufen.
Wie kann ich editor
dazu bringen, einen Texteditor meiner Wahl zu verwenden, oder sollte ich einen anderen Befehl verwenden?
Antwort
Dies ist ein Debian-Ismus (und erscheint daher in Ubuntu, Mint usw.). Sie wurden eingerichtet ein Linkaufruf ed editor
. Sie können es wie folgt zurückverfolgen:
$ which editor /usr/bin/editor $ ls -l /usr/bin/editor lrwxrwxrwx 1 root root 24 Nov 24 19:10 /usr/bin/editor -> /etc/alternatives/editor $ ls -l /etc/alternatives/editor lrwxrwxrwx 1 root root 18 Nov 24 19:46 /etc/alternatives/editor -> /usr/bin/vim.gnome $ ls -l /usr/bin/vim.gnome -rwxr-xr-x 1 root root 2403392 Oct 26 2012 /usr/bin/vim.gnome
Sie können also sehen, dass editor
nur ein Unix-Link zu ist die ausführbare Datei vim.gnome
.
Verwenden von editor
?
Ich glaube nicht, dass ich “ d Gehen Sie in diese Richtung, um editor
auf eine für Benutzer sinnvolle Weise einzurichten, da dies nicht das ist, was ich als Standard betrachten würde.
Zusätzlich können Sie die festlegen $EDITOR
Umgebungsvariable, die auf alles zeigt, was Sie möchten, vim
, gedit
, emacs
usw. Diese Variable wird jedoch garantiert nur von anderen Tools wie sudo
, git
und subversion
, die speziell für die Verwendung der Variablen $EDITOR
entwickelt wurden.
Implementierungsideen
Ich würde lediglich einen Alias Ihrer Wahl einrichten und entweder die Benutzer anweisen, dass er verfügbar ist sie über ihre Datei $HOME/.bashrc
als Alias X oder als Systemkonfiguration in der Datei /etc/profile.d/our_aliases.sh
als Alias X einrichten.
Oder Sie können den Benutzern einfach mitteilen, dass die Systeme „gedit
, gvim
, vim
, emacs
usw. und schneiden Sie die Zuckerbeschichtung durch und bringen Sie ihnen diese Dinge sofort bei.
Oder Sie können einen Text bereitstellen Datei mit dem Namen /etc/help.txt
, die über einen Befehl help
(alias help="less /etc/help.txt"
) in einer Shell ausgeführt werden kann das würde grundlegende Befehle und das Ausführen verschiedener Aufgaben bereitstellen. Mit diesem Ansatz können Sie die Hilfe im Laufe der Zeit mit neuen Funktionen oder Tipps anpassen und erhalten mehr als nur den Befehl editor
.
Kommentare
- Ja, Benutzer wissen, wie ihr Editor heißt, und ich werde ihnen nur sagen, dass sie eine bestimmte Datei bearbeiten sollen, anstatt ein Codebeispiel anzuzeigen. Ich war mit den Codebeispielen auf dem Laufenden und habe ‚ nicht bemerkt, dass ich ein wenig pedantisch wurde. ‚ ist zu schade, dass Ubuntu ‚ die Variable
$EDITOR
nicht setzt, jetzt ich ‚ kann sich nicht darauf oder auf deneditor
Symlink verlassen. -
s/Ubuntu/Debian/g
- Standards , seufz …
Antwort
Das Editorprogramm, das von einigen Programmen aufgerufen wird, wenn Sie sie anweisen, eine Datei zu bearbeiten. Sie müssen die Umgebungsvariable selbst festlegen.
Wenn Sie csh oder tcsh verwenden, geben Sie an der Shell-Eingabeaufforderung Folgendes ein:
setenv EDITOR vim
Wenn Sie verwenden bash oder ksh, dann geben Sie Folgendes ein:
EDITOR=vim; export EDITOR
(Ersetzen Sie „vim“ durch den Editor, den Sie verwenden möchten.)
Das EDITOR
Variable ist die Variable, die Sie standardmäßig für einige Anwendungen benötigen, um den Editor aufzurufen. Es gibt eine weitere Variable namens VISUAL
, mit der der bildschirmorientierte Editor angegeben wird. Im Allgemeinen möchten Sie den gleichen Wert wie die Variable EDITOR
festlegen. Ursprünglich wäre EDITOR
auf ed (ein zeilenbasierter Editor) und VISUAL
auf vi (ein Bildschirm-) gesetzt worden. basierter Editor).
VISUAL="vim"; export VISUAL VISUAL="$EDITOR"; export VISUAL #even better
Wenn Sie dies getan haben, verwenden die meisten Unix-Programme, die Texteditoren verwenden, den von Ihnen festgelegten Editor. Befolgen Sie die obigen Befehle, Sie legen den Standardeditor nur für die aktuelle Computersitzung fest. Um diese Änderungen dauerhaft zu machen, müssen Sie die oben beschriebenen entsprechenden Befehle in Ihr .login
oder -Dateien (für csh- oder tcsh-Benutzer) oder Ihre .profile
-Datei (wenn Sie bash oder ksh verwenden).
Es gibt auch eine andere Umgebungsvariable, wenn Sie vorgeben, Emacs zu verwenden. Es ist ALTERNATE_EDITOR
und hat den gleichen Effekt, wird jedoch verwendet, wenn Emacs mit der Option --alternate-editor
aufgerufen wird.
Aus dem GNU Emacs-Handbuch :
Die Option
--alternate-editor=command
ist nützlich, wennemacsclient
in einem Skript ausgeführt wird. Es gibt einen Befehl an, der ausgeführt werden soll, wennemacsclient
Emacs nicht kontaktiert. Die folgende Einstellung für die UmgebungsvariableEDITOR
gibt beispielsweise immer einen Editor an, auch wenn Emacs nicht ausgeführt wird:EDITOR="emacsclient --alternate-editor vi +%d %s"
Kommentare
-
sh
sagt nicht ‚ macht keinen Sinn.sh
ist normalerweise die Shell des Systems ‚. Früher war es die Thomson-Shell, dann die Bourne-Shell und heutzutage auf den meisten Systemen die eine oder andere Shell, die die POSIXsh
-Spezifikation implementiert. Die Syntaxexport EDITOR=vim
lautet POSIX, jedoch weder Bourne noch Thomson. Dieexport VISUAL=$EDITOR
funktioniert inbash
und einigen Implementierungen vonksh
. In den meisten anderen Shells benötigen Sieexport VISUAL="$EDITOR"
.VISUAL=$EDITOR export VISUAL
funktioniert in allen Bourne-ähnlichen Shells, einschließlich der Bourne-Shell. - Ist es üblich und akzeptiert,
EDITOR
auf einen solchen Mehrwortwert? In diesem Fall kann ichwhich "$EDITOR"
oderwhich $EDITOR
nicht sicher verwenden, um zu überprüfen, ob es vorhanden ist.
Antwort
Sie müssen die editor
in der Umgebungsvariablen EDITOR
. Fügen Sie den folgenden Befehl in Ihre .profile
ein:
export EDITOR=editor
Wenn Sie vim
Als Standardeditor fügen Sie stattdessen
export EDITOR=vim
hinzu. Persönliche Präferenz: Ich verwende den absoluten Pfadnamen des Editors in der Umgebungsvariablen. Beispiel:
export EDITOR=/usr/bin/vim
Antwort
Die Der Befehl editor
ist ubuntu-spezifisch. Es ist nicht tragbar oder sogar üblich (außerhalb von Ubuntu). Der Befehl ist auch systemweit und nicht pro Benutzer festgelegt. Die Funktionsweise ist, dass /usr/bin/editor
nur ein Symlink zu einem Editor im System ist. Als solches ist es für alle Benutzer gleich.
Die Umgebungsvariable $EDITOR
ist ziemlich Standard. Es wird von vielen Programmen verwendet, bei denen der Benutzer etwas bearbeiten muss. Daher ist es diese Variable, die Sie verwenden sollten, wenn Sie den Editor des Benutzers aufrufen möchten.
Kommentare
- Sie ist nicht Ubuntu-spezifisch. Es kommt von Debian und verwendet den Mechanismus = ivi “ “ „“ „“. nicht nur Ubuntu.
Antwort
Dies ist, was ich in meinem Skript verwende:
# Find a suitable text editor editor="$VISUAL" [ -z "$editor" ] && editor="$EDITOR" [ -z "$editor" ] && which editor >/dev/null && editor=editor [ -z "$editor" ] && which nano >/dev/null && editor=nano [ -z "$editor" ] && which vi >/dev/null && editor=vi [ -z "$editor" ] && editor=no_editor_found # Use the editor we found $editor "$filename"
Ich habe den letzten Aufruf von $editor
nicht in Anführungszeichen gesetzt, um sicherzustellen, dass das obige emacsclient-Beispiel funktioniert.
Aus diesem Grund halte ich es für wichtig, immer einen Wert für editor
festzulegen, andernfalls für die letzte Zeile könnte unbeabsichtigt $ filename ausführen. In meinem Fall habe ich no_editor_found
gewählt, aber Sie könnten es auch Verwenden Sie dort pico
oder ed
.