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
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 esegueemacsclient
in uno script. Specifica un comando da eseguire seemacsclient
non riesce a contattare Emacs. Ad esempio, la seguente impostazione per la variabile dambienteEDITOR
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 POSIXsh
. La sintassiexport EDITOR=vim
è POSIX, ma non Bourne né Thomson.export VISUAL=$EDITOR
funziona inbash
e in alcune implementazioni diksh
. Nella maggior parte delle altre shell è necessarioexport 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 sicurezzawhich "$EDITOR"
owhich $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ì.
$EDITOR
, ora non può ‘ fare affidamento su questo o suleditor
collegamento simbolico.s/Ubuntu/Debian/g