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=commandeste util atunci când rulațiemacsclientîntr-un script. Specifică o comandă de executat dacăemacsclientnu reușește să contacteze Emacs. De exemplu, următoarea setare pentru variabila de mediuEDITORva oferi întotdeauna un editor, chiar dacă Emacs nu rulează:EDITOR="emacsclient --alternate-editor vi +%d %s"
Comentarii
- Spunerea
shnu nu are sens.sheste, 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=vimeste POSIX, dar nu Bourne și nici Thomson.export VISUAL=$EDITORfuncționează înbashși unele implementări aleksh. Aveți nevoie deexport VISUAL="$EDITOR"în majoritatea celorlalte cochilii.VISUAL=$EDITOR export VISUALva funcționa în toate shell-urile Bourne, inclusiv shell Bourne. - Este obișnuit și acceptat să setați
EDITORla o valoare cu mai multe cuvinte de genul asta? Dacă da, nu pot folosi în siguranțăwhich "$EDITOR"sauwhich $EDITORpentru 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 peeditorlink-ul simbolic.s/Ubuntu/Debian/g