Ik was op zoek naar een commando dat hopelijk de favoriete teksteditor van de huidige gebruiker zou openen, omdat ik enkele instructies met commandos in een blog schrijf. Ik verwachtte een commando als edit
, en ik vond editor
. Voor mij begon het vim in de terminal, wat dicht bij wat Ik wilde; ik gebruik vim-gtk. Ik begon te zoeken naar een manier om de editor vim-gtk te laten gebruiken en vond deze vraag waarin een $EDITOR
omgevingsvariabele, maar ik weet niet zeker of dat zelfs gerelateerd is aan het editor
commando. Ik probeerde man editor
, maar dat heeft zojuist de manpage van vim opgeroepen.
Hoe kan ik editor
een teksteditor naar keuze laten gebruiken, of moet ik een ander commando gebruiken?
Answer
Dit is een Debian-isme (en verschijnt daarom in Ubuntu, Mint, enz.). Ze hebben een linkoproep ed editor
. U kunt het als volgt traceren:
$ 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
U kunt dus zien dat editor
slechts een Unix-link is naar het uitvoerbare bestand vim.gnome
.
Met editor
?
Ik denk niet dat ik zou in die richting gaan om editor
op een zinvolle manier in te stellen voor gebruikers, aangezien het niet is wat ik als standaard zou beschouwen.
Bovendien kun je de $EDITOR
omgevingsvariabele die verwijst naar alles wat je maar wilt, vim
, gedit
, emacs
, etc. Maar deze variabele wordt gegarandeerd alleen gebruikt door andere tools zoals sudo
, git
en subversion
die specifiek zijn ontworpen om te worden gekoppeld aan het gebruik van de variabele $EDITOR
.
Implementatie-ideeën
Ik zou alleen een alias naar keuze instellen en ofwel de gebruikers instrueren dat het beschikbaar is ze via hun $HOME/.bashrc
-bestand als alias X, of stel het in als een systeemconfiguratie in het bestand /etc/profile.d/our_aliases.sh
, als alias X.
Of u kunt gebruikers gewoon vertellen dat de systemen “bieden gedit
, gvim
, vim
, emacs
, enz. en snijd door de suikerlaag heen en leer ze meteen over deze dingen.
Of je kunt een tekst opgeven bestand met de naam /etc/help.txt
dat ze konden uitvoeren via een commando help
(alias help="less /etc/help.txt"
) in een shell dat zou basiscommandos opleveren en hoe verschillende taken moeten worden uitgevoerd. Deze aanpak stelt je in staat om de hulp naarmate de tijd verstrijkt aan te passen met nieuwe functies of tips en het geeft ze meer dan alleen het editor
gemakscommando.
Opmerkingen
Antwoord
Het bewerkingsprogramma dat door sommige programmas wordt aangeroepen wanneer u hen vertelt een bestand te bewerken. U moet de omgevingsvariabele zelf instellen.
Als u csh of tcsh gebruikt, bij de shell-prompt:
setenv EDITOR vim
Als u bash of ksh, en voer dan in:
EDITOR=vim; export EDITOR
(Vervang “vim” door de editor die je wilt gebruiken.)
De EDITOR
variabele is degene die je standaard nodig hebt voor sommige applicaties om de editor aan te roepen. Er is een andere variabele genaamd VISUAL
die wordt gebruikt om de schermgeoriënteerde editor te specificeren. Over het algemeen wilt u deze instellen op dezelfde waarde als de variabele EDITOR
. Oorspronkelijk zou EDITOR
zijn ingesteld op ed (een regelgebaseerde editor) en VISUAL
zou “zijn ingesteld op vi (een scherm- gebaseerde editor).
VISUAL="vim"; export VISUAL VISUAL="$EDITOR"; export VISUAL #even better
Wanneer je dit hebt gedaan, zullen de meeste Unix-programmas die teksteditors gebruiken de editor gebruiken die je hebt ingesteld. Door de bovenstaande opdrachten te volgen, u stelt de standaardeditor alleen voor de huidige computersessie in. Om deze wijzigingen permanent te maken, moet u de juiste opdrachten die hierboven worden beschreven in uw .login
of bestanden (voor csh- of tcsh-gebruikers) of uw .profile
-bestand (als u bash of ksh gebruikt).
Er is ook een andere omgevingsvariabele, als je doet alsof je Emacs gebruikt. Het “s ALTERNATE_EDITOR
, en heeft hetzelfde effect, maar het wordt gebruikt wanneer Emacs wordt aangeroepen met de --alternate-editor
optie.
Van de GNU Emacs-handleiding :
De optie
--alternate-editor=command
is handig bij het uitvoeren vanemacsclient
in een script. Het specificeert een commando dat moet worden uitgevoerd alsemacsclient
geen contact kan opnemen met Emacs. De volgende instelling voor deEDITOR
omgevingsvariabele geeft bijvoorbeeld altijd een editor, zelfs als Emacs niet actief is:EDITOR="emacsclient --alternate-editor vi +%d %s"
Reacties
- Zeggen
sh
doet niet ‘ klopt niet.sh
is gewoonlijk de systeemshell van ‘. Vroeger was het de Thomson-shell, daarna de Bourne-shell en tegenwoordig, op de meeste systemen, implementeerde de ene shell de POSIXsh
-specificatie. Deexport EDITOR=vim
syntaxis is POSIX, maar niet Bourne of Thomson. Deexport VISUAL=$EDITOR
werkt inbash
en sommige implementaties vanksh
. Je hebtexport VISUAL="$EDITOR"
nodig in de meeste andere shells.VISUAL=$EDITOR export VISUAL
zal werken in alle Bourne-achtige shells, inclusief de Bourne-shell. - Is het gebruikelijk en geaccepteerd om
EDITOR
naar een dergelijke meerwoordswaarde? Als dit het geval is, kan ikwhich "$EDITOR"
ofwhich $EDITOR
niet veilig gebruiken om te controleren of het aanwezig is.
Antwoord
U moet de editor
specificeren in de omgevingsvariabele EDITOR
. Voeg de volgende opdracht toe aan uw .profile
:
export EDITOR=editor
Als u vim
als je standaardeditor, voeg je in plaats daarvan toe
export EDITOR=vim
Persoonlijke voorkeur: ik gebruik de absolute padnaam van de editor in de omgevingsvariabele. Bijvoorbeeld:
export EDITOR=/usr/bin/vim
Antwoord
De editor
commando is ubuntu-specifiek. Het is niet draagbaar of zelfs niet gebruikelijk (buiten ubuntu). De opdracht is ook systeembreed ingesteld, en niet per gebruiker. De manier waarop het werkt is dat /usr/bin/editor
slechts een symbolische link is naar een editor op het systeem. Als zodanig is het hetzelfde voor alle gebruikers.
De $EDITOR
omgevingsvariabele is redelijk standaard. Het wordt gebruikt door veel programmas waarbij de gebruiker iets moet bewerken. Als zodanig is het deze variabele die u moet gebruiken als u de editor van de gebruiker wilt oproepen.
Opmerkingen
- Het is niet specifiek voor Ubuntu, het komt van Debian en gebruikt het Debian ‘ s alternatieven mechanisme. Het ‘ is beschikbaar in alle Debian-derivaten, niet alleen Ubuntu.
Answer
Dit is wat ik in mijn script gebruik:
# 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"
Ik heb geen aanhalingstekens geplaatst rond de laatste aanroep van $editor
om ervoor te zorgen dat het bovenstaande emacsclient-voorbeeld werkt.
Daarom denk ik dat het belangrijk is om altijd een waarde in te stellen voor editor
, anders de laatste regel zou onbedoeld $ filename kunnen uitvoeren. In mijn geval heb ik no_editor_found
gekozen, maar je kunt ook gebruik daar pico
of ed
.
div
$EDITOR
variabele instelt, nu heb ik kan ‘ daar niet op vertrouwen of deeditor
symlink.s/Ubuntu/Debian/g