Căutam o comandă care să deschidă, sperăm, editorul de text preferat al utilizatorului curent, deoarece scriu câteva instrucțiuni cu comenzi într-un blog. Așteptam o comandă de genul edit
și am găsit editor
. Pentru mine a început vim în terminal, care este aproape de ceea ce Am vrut; folosesc vim-gtk. Am început să caut o modalitate de a face editorul să folosească vim-gtk și am găsit această întrebare care explică o $EDITOR
variabilă de mediu, dar nu sunt sigur dacă acest lucru este chiar legat de comanda editor
. Am încercat man editor
, dar asta tocmai a tras pe pagina de manual vim.
Cum pot face ca editor
să folosească un editor de text la alegerea mea sau ar trebui să folosesc o comandă diferită?
Răspuns
Acesta este un Debian-ism (și, prin urmare, apare în Ubuntu, Mint etc.). Au configurat un apel de legătură ed editor
. Puteți să-l urmăriți după cum urmează:
$ 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
Deci, puteți vedea că editor
este doar un link Unix către executabilul vim.gnome
.
Folosind editor
?
Nu cred că ” mergi în acea direcție de configurare editor
în orice mod semnificativ pentru utilizatori, dat fiind că nu este ceea ce aș considera standard.
În plus, poți seta $EDITOR
variabilă de mediu pentru a indica orice doriți, vim
, gedit
, emacs
, etc. Dar această variabilă este garantată doar pentru a fi utilizată de alte instrumente precum sudo
, git
și subversion
care sunt concepute special pentru a fi asociate utilizând variabila $EDITOR
.
Idei de implementare
V-aș configura doar un alias la alegere și voi instrui utilizatorii că este disponibil pentru le prin intermediul fișierului lor $HOME/.bashrc
ca alias X sau configurați-l ca o configurație de sistem în fișierul /etc/profile.d/our_aliases.sh
, ca alias X.
Sau puteți spune utilizatorilor că sistemele „furnizează gedit
, gvim
, vim
, emacs
etc. și tăiați învelișul de zahăr și învățați-i despre aceste lucruri chiar de pe liliac.
Sau puteți furniza un text fișier numit /etc/help.txt
pe care l-ar putea rula printr-o comandă help
(alias help="less /etc/help.txt"
) într-un shell care ar oferi comenzi de bază și cum să efectuați diverse sarcini. Această abordare vă permite să personalizați ajutorul pe măsură ce trece timpul cu funcții sau sfaturi noi și le oferă mai mult decât simpla editor
comandă de comoditate.
Comentarii
Răspuns
Programul editor apelat de unele programe când le spuneți să editeze un fișier. Trebuie să setați singur variabila de mediu.
Dacă utilizați csh sau tcsh, la promptul shell:
setenv EDITOR vim
Dacă utilizați bash sau ksh, apoi introduceți:
EDITOR=vim; export EDITOR
(Înlocuiți „vim” cu editorul pe care doriți să îl utilizați.)
EDITOR
este cea de care aveți nevoie în mod implicit pentru ca unele aplicații să invoce editorul. Există o altă variabilă numită VISUAL
utilizată pentru a specifica editorul orientat pe ecran. În general, veți dori să o setați la aceeași valoare ca variabila EDITOR
. Inițial EDITOR
ar fi fost setat la ed (un editor bazat pe linie), iar VISUAL
ar fi fost setat la vi (un ecran editor bazat).
VISUAL="vim"; export VISUAL VISUAL="$EDITOR"; export VISUAL #even better
După ce ați făcut acest lucru, majoritatea programelor Unix care folosesc editori de text vor folosi editorul pe care l-ați setat. Urmând comenzile de mai sus, veți seta editorul implicit numai pentru sesiunea de calcul curentă. Pentru a face aceste modificări permanente, va trebui să plasați comenzile corespunzătoare descrise mai sus în .login
sau .cshrc
fișiere (pentru utilizatorii csh sau tcsh) sau fișierul dvs. .profile
(dacă utilizați bash sau ksh).
Există, de asemenea, o altă variabilă de mediu, dacă vă prefaceți că utilizați Emacs. Este „s ALTERNATE_EDITOR
și are același efect, dar este folosit atunci când Emacs este invocat cu opțiunea --alternate-editor
.
Din Manual GNU Emacs :
Opțiunea
--alternate-editor=command
este util atunci când rulațiemacsclient
într-un script. Specifică o comandă de executat dacăemacsclient
nu reușește să contacteze Emacs. De exemplu, următoarea setare pentru variabila de mediuEDITOR
va oferi întotdeauna un editor, chiar dacă Emacs nu rulează:EDITOR="emacsclient --alternate-editor vi +%d %s"
Comentarii
- Spunerea
sh
nu nu are sens.sh
este, de obicei, shell-ul sistemului ‘. Obișnuia să fie shell-ul Thomson, apoi shell-ul Bourne și apoi în zilele noastre pe majoritatea sistemelor, un shell sau altul punând în aplicare specificația POSIXsh
. Sintaxaexport EDITOR=vim
este POSIX, dar nu Bourne și nici Thomson.export VISUAL=$EDITOR
funcționează înbash
și unele implementări aleksh
. Aveți nevoie deexport VISUAL="$EDITOR"
în majoritatea celorlalte cochilii.VISUAL=$EDITOR export VISUAL
va funcționa în toate shell-urile Bourne, inclusiv shell Bourne. - Este obișnuit și acceptat să setați
EDITOR
la o valoare cu mai multe cuvinte de genul asta? Dacă da, nu pot folosi în siguranțăwhich "$EDITOR"
sauwhich $EDITOR
pentru a verifica dacă este prezent.
Răspuns
Va trebui să specificați editor
în variabila de mediu EDITOR
. Adăugați următoarea comandă în .profile
:
export EDITOR=editor
Dacă doriți vim
ca editor implicit, veți adăuga în schimb
export EDITOR=vim
Preferință personală: folosesc numele căii absolute a editorului în variabila de mediu. De exemplu,
export EDITOR=/usr/bin/vim
Răspuns
Comanda editor
este specifică pentru ubuntu. Nu este portabil sau chiar obișnuit (în afara Ubuntu). Comanda este, de asemenea, setată la nivel de sistem și nu pe utilizator. Modul în care funcționează este că /usr/bin/editor
este doar un link simbolic către un editor din sistem. Ca atare, este la fel pentru toți utilizatorii.
Variabila de mediu $EDITOR
este destul de standard. Este folosit de multe programe care au nevoie de utilizator pentru a edita ceva. Ca atare, această variabilă ar trebui să o utilizați atunci când doriți să invocați editorul utilizatorului.
Comentarii
- Nu este specifică Ubuntu, provine de la Debian și folosește mecanismul alternative Debian ‘ s. Este ‘ disponibil în toate derivatele Debian, nu numai Ubuntu.
Răspuns
Iată ce folosesc în scriptul meu:
# 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"
Nu am încadrat ghilimele în jurul apelului final către $editor
pentru a mă asigura că exemplul emacsclient de mai sus va funcționa.
Din această cauză, cred că este important să setați întotdeauna o valoare pentru editor
, altfel ultima linie ar putea executa neintenționat $ filename . În cazul meu am ales no_editor_found
dar ați putea în mod egal folosiți pico
sau ed
acolo.
$EDITOR
, acum am ‘ nu se poate baza pe asta sau peeditor
link-ul simbolic.s/Ubuntu/Debian/g