Qual è il comando `editor` in bash?

Stavo cercando un comando che si spera aprisse leditor di testo preferito dellutente corrente, perché sto scrivendo alcune istruzioni con i comandi in un blog. Mi aspettavo un comando come edit e ho trovato editor. Per me, ha avviato vim nel terminale, che è vicino a quanto Volevo; Uso vim-gtk. Ho iniziato a cercare un modo per fare in modo che leditor usasse vim-gtk e ho trovato questa domanda che spiega un $EDITOR variabile di ambiente, ma non sono sicuro che sia persino correlata al comando editor. Ho provato man editor , ma questo ha appena richiamato la pagina man di vim.

Come posso fare in modo che editor utilizzi un editor di testo di mia scelta, o dovrei usare un comando diverso?

Risposta

Questo è un Debian-ism (e quindi appare in Ubuntu, Mint, ecc.). una chiamata di collegamento ed editor. Puoi rintracciarlo come segue:

$ 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 

Quindi puoi vedere che editor è solo un collegamento Unix a leseguibile vim.gnome.

Utilizzo di editor?

Non “credo di sì” andrei in quella direzione di impostare editor in modo significativo per gli utenti, dato che non è quello che considererei standard.

Inoltre puoi impostare il $EDITOR variabile di ambiente per puntare a tutto ciò che desideri, vim, gedit, emacs e così via. Ma questa variabile può essere utilizzata solo da altri strumenti come sudo, git e subversion specificamente progettati per essere collegati allutilizzo della variabile $EDITOR.

Idee per limplementazione

Vorrei semplicemente impostare un alias di tua scelta e istruire gli utenti che è disponibile per tramite il loro file $HOME/.bashrc come alias X o impostarlo come configurazione di sistema nel file /etc/profile.d/our_aliases.sh, come alias X.

Oppure puoi semplicemente dire agli utenti che i sistemi “forniscono gedit, gvim, vim, emacs e così via e taglia il rivestimento di zucchero e spiega loro queste cose fin dallinizio.

Oppure potresti fornire un testo file chiamato /etc/help.txt che potevano eseguire tramite un comando help (alias help="less /etc/help.txt") in una shell che fornirebbe comandi di base e come eseguire varie attività. Questo approccio consente di personalizzare la guida con il passare del tempo con nuove funzionalità o suggerimenti e fornisce loro più del semplice comando editor.

Commenti

  • Sì, gli utenti sapranno come viene chiamato il loro editor e dirò loro di modificare un particolare file invece di mostrare un esempio di codice. Ero impegnato con gli esempi di codice e ‘ non mi rendevo conto che stavo diventando un po pedante. ‘ è un peccato che Ubuntu non ‘ t abbia impostato la variabile $EDITOR, ora non può ‘ fare affidamento su questo o sul editor collegamento simbolico.
  • s/Ubuntu/Debian/g
  • standard , sigh …

Risposta

Il programma editor chiamato da alcuni programmi quando dici loro di modificare un file. Devi impostare tu stesso la variabile dambiente.

Se usi csh o tcsh, al prompt della shell:

setenv EDITOR vim 

Se usi bash o ksh, quindi inserisci:

EDITOR=vim; export EDITOR 

(Sostituisci “vim” con leditor che desideri utilizzare.)

Il EDITOR è quella di cui hai bisogno per impostazione predefinita per alcune applicazioni per invocare leditor. Cè unaltra variabile chiamata VISUAL usata per specificare leditor orientato allo schermo. Generalmente vorrai impostarlo sullo stesso valore della variabile EDITOR. Originariamente EDITOR sarebbe stato impostato su ed (un editor basato su righe) e VISUAL sarebbe stato impostato su vi (uno schermo- basato sulleditor).

VISUAL="vim"; export VISUAL VISUAL="$EDITOR"; export VISUAL #even better 

Quando hai fatto questo, la maggior parte dei programmi Unix che usano editor di testo useranno leditor che hai impostato. Seguendo i comandi sopra, imposterai leditor predefinito solo per la sessione di elaborazione corrente. Per rendere permanenti queste modifiche, dovrai inserire i comandi appropriati descritti sopra nel tuo .login o .cshrc (per utenti csh o tcsh) o il tuo file .profile (se usi bash o ksh).

Cè anche unaltra variabile dambiente, se fingi di usare Emacs. È “ALTERNATE_EDITOR e ha lo stesso effetto, ma è usato quando Emacs viene invocato con lopzione --alternate-editor.

Dal Manuale GNU Emacs :

Lopzione --alternate-editor=command è utile quando si esegue emacsclient in uno script. Specifica un comando da eseguire se emacsclient non riesce a contattare Emacs. Ad esempio, la seguente impostazione per la variabile dambiente EDITOR darà sempre un editor, anche se Emacs non è in esecuzione:

EDITOR="emacsclient --alternate-editor vi +%d %s" 

Commenti

  • Dire sh non ‘ non ha senso. sh di solito è la shell del sistema ‘. Una volta era la shell Thomson, poi la shell Bourne e oggi, sulla maggior parte dei sistemi, una shell o unaltra che implementava la specifica POSIX sh. La sintassi export EDITOR=vim è POSIX, ma non Bourne né Thomson. export VISUAL=$EDITOR funziona in bash e in alcune implementazioni di ksh. Nella maggior parte delle altre shell è necessario export VISUAL="$EDITOR". VISUAL=$EDITOR export VISUAL funzionerà con tutte le shell simili a Bourne, inclusa la shell Bourne.
  • È comune e accettato impostare EDITOR a un valore composto da più parole come quello? In tal caso, non posso utilizzare in sicurezza which "$EDITOR" o which $EDITOR per verificare se è presente.

Risposta

Dovrai specificare editor nella variabile dambiente EDITOR. Aggiungi il seguente comando nel tuo .profile:

export EDITOR=editor 

Se vuoi vim come editor predefinito, aggiungerai invece

export EDITOR=vim

Preferenze personali: utilizzo il nome del percorso assoluto delleditor nella variabile dambiente. Ad esempio,

export EDITOR=/usr/bin/vim

Answer

Il Il comando editor è specifico di Ubuntu. Non è portatile e nemmeno comune (al di fuori di Ubuntu). Il comando è anche impostato a livello di sistema e non per utente. Il modo in cui funziona è che /usr/bin/editor è solo un collegamento simbolico a un editor sul sistema. In quanto tale è lo stesso per tutti gli utenti.

La variabile dambiente $EDITOR è abbastanza standard. Viene utilizzato da molti programmi che richiedono allutente di modificare qualcosa. In quanto tale, è questa variabile che dovresti usare quando vuoi richiamare leditor dellutente.

Commenti

  • Non è specifica di Ubuntu, proviene da Debian e utilizza il meccanismo ‘ s alternative di Debian. È ‘ disponibile in tutti i derivati Debian, non solo Ubuntu.

Risposta

Questo è ciò che sto usando nel mio script:

# 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" 

Non ho racchiuso le virgolette intorno alla chiamata finale a $editor per assicurarmi che lesempio emacsclient sopra funzioni.

Per questo motivo, penso sia importante impostare sempre un valore per editor, altrimenti lultima riga potrebbe eseguire involontariamente $ filename . Nel mio caso ho scelto no_editor_found ma potresti ugualmente utilizza pico o ed lì.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *