2011-12-06 13 views
12

Ci sono un sacco di posti in UNIX dove i programmi chiamano fuori per il programma in $ PAGER (di solito less o qualche comando simile) per visualizzare qualche uscita. È certamente vero che molti degli usi più comuni hanno una sostituzione di Emacs (nel caso di man, ad esempio), ma mi piacerebbe comunque un modo generale per usare Emacs come mio cercapersone a livello di sistema. Idealmente ciò significherebbe che le chiamate a PAGER finiscono in un buffer temporaneo di Emacs simile a * Help *, un buffer di sola lettura che puoi navigare e chiudere premendo "q".

Solitamente eseguo una shell tramite shell Mx, quindi il mio caso d'uso previsto è che digitando un comando come "man foo" nella finestra * shell * verrà visualizzata la pagina man in un'altra finestra, più o meno esattamente come il sistema * Help * integrato funziona.

+4

'' less' è more', ma c'è anche un altro 'most' cercapersone che ha binding emacs-like e un po 'di bel colore. – Daimrod

risposta

5

Per l'uso generale di $PAGER, potrebbe essere interessato a e-sink.

Per il caso specifico delle pagine man, è meglio usare la modalità uomo incorporata di Emacs come si nota. Ho questo nel mio .bashrc:

man() 
{ 
    if [ "$TERM" == "eterm-color" ]; then 
     emacsclient -e "(man \"$1\")"; 
    else 
     command man "[email protected]"; 
    fi 
} 

Dal momento che si utilizza shell-mode piuttosto che ansi-term-mode come faccio io si sia necessario per rendere questo uso emacsclient tutto il tempo, o fare qualcosa di simile (setenv "WITHIN_EMACS" "1") nel file .emacs modo da poter passare su $WITHIN_EMACS invece.

+2

Non hai bisogno di impostare la tua variabile, emacs imposta 'INSIDE_EMACS' per te in' M-x shell'. Vedi [il manuale] (https://www.gnu.org/s/libtool/manual/emacs/Interactive-Shell.html) – brontitall

+0

+1. Preferisco 'ansi-term-mode' quindi non me ne sono reso conto. –