Jeg lette etter en kommando som forhåpentligvis åpner den nåværende brukerens favoritttekstredigerer, fordi jeg skriver ut noen instruksjoner med kommandoer i en blogg. Jeg ventet en kommando som edit
, og jeg fant editor
. For meg startet det vim i terminalen, som er nær det Jeg ville; jeg bruker vim-gtk. Jeg begynte å søke etter en måte å få redaktøren til å bruke vim-gtk og fant dette spørsmålet som forklarer et $EDITOR
miljøvariabel, men jeg er ikke sikker på om det til og med er relatert til editor
-kommandoen. Jeg prøvde man editor
, men det trakk bare opp vim-siden.
Hvordan kan jeg få editor
til å bruke en tekstredigerer etter eget valg, eller skal jeg bruke en annen kommando?
Svar
Dette er en Debian-isme (og vises derfor i Ubuntu, Mint osv.). De har satt opp en koblingsanrop ed editor
. Du kan spore den tilbake på følgende måte:
$ 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 en Unix-lenke til den kjørbare vim.gnome
.
Ved hjelp av editor
?
Jeg tror ikke jeg » d gå i den retningen for å sette opp editor
på en hvilken som helst meningsfull måte for brukerne, gitt at det ikke er det jeg anser som standard.
I tillegg kan du stille inn $EDITOR
miljøvariabel for å peke på alt du vil, vim
, gedit
, emacs
osv. Men denne variabelen blir bare garantert brukt av andre verktøy som sudo
, git
og subversion
som er spesielt designet for å være knyttet til variabelen $EDITOR
.
Implementeringsideer
Jeg vil bare sette opp et alias etter eget valg og enten instruere brukerne om at det er tilgjengelig for dem via $HOME/.bashrc
-filen som alias X, eller sett den opp som en systemkonfigurasjon i filen /etc/profile.d/our_aliases.sh
, som alias X.
Eller du kan bare fortelle brukerne at systemene «gir gedit
, gvim
, vim
, emacs
osv. og skjær gjennom sukkerbelegget og lær dem om disse tingene rett utenfor flaggermusen.
Eller du kan gi en tekst fil kalt /etc/help.txt
som de kunne kjøre via en kommando help
(alias help="less /etc/help.txt"
) i et skall som vil gi grunnleggende kommandoer og hvordan du skal utføre forskjellige oppgaver. Denne tilnærmingen lar deg tilpasse hjelpen etter hvert med nye funksjoner eller tips, og den gir dem mer enn bare editor
bekvemmelighetskommando.
Kommentarer
Svar
Redigeringsprogrammet som noen programmer kaller når du ber dem redigere en fil. Du må stille inn miljøvariabelen selv.
Hvis du bruker csh eller tcsh, ved shell-ledeteksten:
setenv EDITOR vim
Hvis du bruker bash eller ksh, skriv deretter inn:
EDITOR=vim; export EDITOR
(Erstatt «vim» med redigeringsprogrammet du vil bruke.)
EDITOR
-variabelen er den du trenger som standard for noen applikasjoner for å påkalle redaktøren. Det er en annen variabel kalt VISUAL
som brukes til å spesifisere skjermorientert editor. Vanligvis vil du sette den til samme verdi som EDITOR
-variabelen. Opprinnelig ville EDITOR
være satt til ed (en linjebasert editor) og VISUAL
ville blitt satt til vi (en skjerm- basert editor).
VISUAL="vim"; export VISUAL VISUAL="$EDITOR"; export VISUAL #even better
Når du har gjort dette, bruker de fleste Unix-programmer som bruker tekstredigeringsprogrammer redigeringsprogrammet du har angitt. Ved å følge kommandoene ovenfor, du vil bare angi standardredigeringsprogrammet for den aktuelle databehandlingen. For å gjøre disse endringene permanente, må du plassere de aktuelle kommandoene beskrevet ovenfor i .login
eller .cshrc
filer (for brukere av csh eller tcsh) eller .profile
-filen (hvis du bruker bash eller ksh).
Det er også en annen miljøvariabel hvis du later til å bruke Emacs. Den «s ALTERNATE_EDITOR
, og har samme effekt, men den brukes når Emacs påkalles med --alternate-editor
-alternativet.
Fra GNU Emacs Manual :
Alternativet
--alternate-editor=command
er nyttig når du kjøreremacsclient
i et skript. Den spesifiserer en kommando som skal kjøres hvisemacsclient
ikke klarer å kontakte Emacs. For eksempel vil følgende innstilling forEDITOR
miljøvariabelen alltid gi en redaktør, selv om Emacs ikke kjører:EDITOR="emacsclient --alternate-editor vi +%d %s"
Kommentarer
- Å si
sh
betyr ikke ‘ t gir mening.sh
er vanligvis systemet ‘ s skall. Det pleide å være Thomson-skallet, så Bourne-skallet, og i dag på de fleste systemer, et eller annet skall som implementerte POSIXsh
-spesifikasjonen.export EDITOR=vim
syntaksen er POSIX, men ikke Bourne eller Thomson.export VISUAL=$EDITOR
fungerer ibash
og noen implementeringer avksh
. Du trengerexport VISUAL="$EDITOR"
i de fleste andre skall.VISUAL=$EDITOR export VISUAL
fungerer i alle Bourne-lignende skall, inkludert Bourne-skallet. - Er det vanlig og akseptert å sette
EDITOR
til en slik ordverdi? I så fall kan jeg ikke trygt brukewhich "$EDITOR"
ellerwhich $EDITOR
for å sjekke om den er tilstede.
Svar
Du må spesifisere editor
i miljøvariabelen EDITOR
. Legg til følgende kommando i .profile
:
export EDITOR=editor
Hvis du vil ha vim
som standardredigerer, vil du legge til i stedet
export EDITOR=vim
Personlig preferanse: Jeg bruker redaktørens absolutte stienavn i miljøvariabelen. For eksempel
export EDITOR=/usr/bin/vim
Svar
editor
-kommandoen er ubuntu-spesifikk. Det er ikke bærbart eller til og med vanlig (utenfor ubuntu). Kommandoen er også satt hele systemet, og ikke per bruker. Måten det fungerer på er at /usr/bin/editor
bare er en symlink til en redaktør på systemet. Som sådan er det det samme for alle brukere.
Miljøvariabelen $EDITOR
er ganske standard. Den brukes av mange programmer som trenger brukeren til å redigere noe. Som sådan er det denne variabelen du bør bruke når du vil påkalle brukerens redaktør.
Kommentarer
- Den er ikke Ubuntu-spesifikk, den kommer fra Debian og bruker Debian ‘ s alternativer mekanisme. Den ‘ er tilgjengelig i alle Debian-derivater, ikke bare Ubuntu.
Svar
Dette er hva jeg bruker i skriptet mitt:
# 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 anførselstegn rundt den siste samtalen til $editor
for å sikre at emacsclient-eksemplet ovenfor fungerer.
Derfor tror jeg det er viktig å alltid sette noen verdi for editor
, ellers den siste linjen kunne utilsiktet utføre $ filnavn . I mitt tilfelle valgte jeg no_editor_found
men du kunne like bruk pico
eller ed
der.
$EDITOR
variabelen, nå kan ‘ ikke stole på det ellereditor
symlinket.s/Ubuntu/Debian/g