Jeg ledte efter en kommando, der forhåbentlig ville åbne den aktuelle brugers foretrukne teksteditor, fordi jeg skriver nogle instruktioner med kommandoer i en blog. Jeg forventede en kommando som edit
, og jeg fandt editor
. For mig startede det vim i terminalen, hvilket er tæt på hvad Jeg ville; jeg bruger vim-gtk. Jeg begyndte at søge efter en måde at få redaktøren til at bruge vim-gtk og fandt dette spørgsmål, der forklarer et $EDITOR
miljøvariabel, men jeg er ikke sikker på, om det engang er relateret til editor
-kommandoen. Jeg prøvede man editor
, men det trak netop vim manpage op.
Hvordan kan jeg få editor
til at bruge en teksteditor efter eget valg, eller skal jeg bruge en anden kommando?
Svar
Dette er en Debian-isme (og vises derfor i Ubuntu, Mint osv.). De har opsat et linkopkald ed editor
. Du kan spore det tilbage som følger:
$ 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
Så du kan se, at editor
bare er et Unix-link til den eksekverbare vim.gnome
.
Brug editor
?
Jeg tror ikke jeg ” d gå i den retning af opsætning af editor
på en meningsfuld måde for brugerne, da det ikke er, hvad jeg ville betragte som standard.
Derudover kan du indstille $EDITOR
miljøvariabel for at pege på alt hvad du vil, vim
, gedit
, emacs
osv. Men denne variabel er kun garanteret at blive brugt af andre værktøjer såsom sudo
, git
og subversion
, der er specielt designet til at blive bundet til at bruge variablen $EDITOR
.
Implementeringsideer
Jeg vil blot oprette et alias efter eget valg og enten instruere brugerne om, at det er tilgængeligt for dem via deres $HOME/.bashrc
-fil som alias X, eller indstil den som en systemkonfiguration i filen /etc/profile.d/our_aliases.sh
, som alias X.
Eller du kan bare fortælle brugerne, at systemerne “giver gedit
, gvim
, vim
, emacs
osv. og skær sukkerbelægningen igennem og lær dem om disse ting lige uden for flagermusen.
Eller du kan give en tekst fil kaldet /etc/help.txt
som de kunne køre via en kommando help
(alias help="less /etc/help.txt"
) i en skal der giver grundlæggende kommandoer og hvordan man udfører forskellige opgaver. Denne tilgang giver dig mulighed for at tilpasse hjælpen, når tiden går, med nye funktioner eller tip, og det giver dem mere end bare editor
kommandoen til bekvemmelighed.
Kommentarer
Svar
Editorprogrammet, som nogle programmer kalder på, når du beder dem om at redigere en fil. Du skal selv indstille miljøvariablen.
Hvis du bruger csh eller tcsh, skal du ved shellprompten:
setenv EDITOR vim
Hvis du bruger bash eller ksh, og indtast derefter:
EDITOR=vim; export EDITOR
(Udskift “vim” med den editor, du vil bruge.)
EDITOR
-variablen er den, du som standard har brug for for nogle applikationer for at påkalde editoren. Der er en anden variabel kaldet VISUAL
, der bruges til at specificere den skærmorienterede editor. Generelt vil du indstille den til den samme værdi som EDITOR
variablen. Oprindeligt ville EDITOR
være indstillet til ed (en linjebaseret editor) og VISUAL
ville “være indstillet til vi (en skærm- baseret editor).
VISUAL="vim"; export VISUAL VISUAL="$EDITOR"; export VISUAL #even better
Når du har gjort dette, vil de fleste Unix-programmer, der bruger teksteditorer, bruge den editor, du har indstillet. Ved at følge ovenstående kommandoer, du indstiller kun standardeditoren til den aktuelle computersession. For at gøre disse ændringer permanente skal du placere de relevante kommandoer beskrevet ovenfor i din .login
eller .cshrc
filer (til csh- eller tcsh-brugere) eller din .profile
-fil (hvis du bruger bash eller ksh).
Der er også en anden miljøvariabel, hvis du foregiver at bruge Emacs. Det “s ALTERNATE_EDITOR
og har den samme effekt, men det bruges, når Emacs påkaldes med --alternate-editor
mulighed.
Fra GNU Emacs Manual :
Indstillingen
--alternate-editor=command
er nyttigt, når du køreremacsclient
i et script. Den specificerer en kommando, der skal køres, hvisemacsclient
ikke kontakter Emacs. For eksempel vil følgende indstilling forEDITOR
miljøvariablen altid give en editor, selvom Emacs ikke kører:EDITOR="emacsclient --alternate-editor vi +%d %s"
Kommentarer
- At sige
sh
betyder ikke ‘ t giver mening.sh
er normalt systemet ‘ s skal. Det plejede at være Thomson-skallen, så Bourne-skallen og derefter i dag på de fleste systemer, en eller anden skal implementere POSIXsh
-specifikationen.export EDITOR=vim
syntaksen er POSIX, men ikke Bourne eller Thomson.export VISUAL=$EDITOR
fungerer ibash
og nogle implementeringer afksh
. Du har brug forexport VISUAL="$EDITOR"
i de fleste andre skaller.VISUAL=$EDITOR export VISUAL
fungerer i alle Bourne-lignende skaller inklusive Bourne-skallen. - Er det almindeligt og accepteret at indstille
EDITOR
til en sådan værdi med flere ord? I så fald kan jeg ikke trygt brugewhich "$EDITOR"
ellerwhich $EDITOR
til at kontrollere, om den er til stede.
Svar
Du bliver nødt til at specificere editor
i miljøvariablen EDITOR
. Tilføj følgende kommando i din .profile
:
export EDITOR=editor
Hvis du vil have vim
som din standard editor, vil du i stedet tilføje
export EDITOR=vim
Personlig præference: Jeg bruger editorens absolutte stienavn i miljøvariablen. For eksempel
export EDITOR=/usr/bin/vim
Svar
editor
-kommandoen er ubuntu-specifik. Det er ikke bærbart eller endda almindeligt (uden for ubuntu). Kommandoen er også indstillet i hele systemet og ikke pr. Bruger. Den måde, det fungerer på er, at /usr/bin/editor
kun er et symlink til en editor på systemet. Som sådan er det det samme for alle brugere.
Miljøvariablen $EDITOR
er ret standard. Det bruges af mange programmer, som har brug for brugeren til at redigere noget. Som sådan er det denne variabel, du skal bruge, når du vil påkalde brugerens editor.
Kommentarer
- Det er ikke Ubuntu-specifikt, den kommer fra Debian og bruger Debian ‘ s alternativer mekanisme. Den ‘ er tilgængelig i alle Debian-derivater, ikke kun Ubuntu.
Svar
Dette bruger jeg i mit script:
# 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"
Jeg har ikke pakket citater omkring det sidste opkald til $editor
for at sikre, at det emacsclient-eksempel ovenfor fungerer.
Derfor synes jeg, det er vigtigt altid at indstille en værdi for editor
, ellers den sidste linje kunne utilsigtet udføre $ filnavn . I mit tilfælde valgte jeg no_editor_found
men du kunne lige brug pico
eller ed
der.
$EDITOR
variablen, nu har jeg kan ‘ ikke stole på det ellereditor
symlinket.s/Ubuntu/Debian/g