Ce este comanda `editor` în bash?

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

  • Da, utilizatorii vor ști cum se numește editorul lor și le voi spune doar să editeze un anumit fișier în loc să arate un exemplu de cod. Eram pe un rol cu exemplele de cod și nu ‘ nu mi-am dat seama că devin un pic pedant. Este ‘ păcat că Ubuntu nu ‘ setează variabila $EDITOR, acum am ‘ nu se poate baza pe asta sau pe editor link-ul simbolic.
  • s/Ubuntu/Debian/g
  • standarde , suspin …

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ți emacsclient î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 mediu EDITOR 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 POSIX sh. Sintaxa export EDITOR=vim este POSIX, dar nu Bourne și nici Thomson. export VISUAL=$EDITOR funcționează în bash și unele implementări ale ksh. Aveți nevoie de export 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" sau which $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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *