2008-12-15 4 views
15

Ho cercato di usare Zsh nella mia sessione di emacs, senza emacs che rimappasse tutte le chiavi Zsh. Ho trovato che ansi-term funziona abbastanza bene per questo, ma ho ancora qualche problema. Mi è stato sempre un sacco di personaggi spazzatura emessi con, sono stato in grado di risolvere il problema con:Ottenere Emacs ansi-term e Zsh per suonare bene

## Setup proper term information for emacs ansi-term mode 
[[ $TERM == eterm-color ]] && export TERM=xterm 

Ma tutto ancora non funziona perfettamente. Ora ho problemi con l'output che viene disegnato fuori dallo schermo, specialmente quando si usa qualcosa come C-r per la ricerca.

Qualsiasi pensiero. Qualcun altro ha Zsh + Ansi-term che funziona correttamente?

+3

1 - non sei l'unico. Tuttavia, ho riscontrato questo problema su mac in modalità tty. – SetJmp

risposta

3

Hmmm. Non penso di aver mai visto una modifica elaborata che funzioni bene entro il termine ansi, anche se non l'ho provato in 20 anni. Chiederò, di passaggio, se hai provato la modalità shell (shell M-x) poiché è comunque molto più naturale con EMACS.

Detto questo, leggendo il file term.el, sembra che l'ansi-term stia facendo un sacco di manomissioni. potresti voler guardare il codice della modalità raw del termine, iniziando dalla riga 1230, almeno in EMACS 22.3.

+0

'shell' è stato l'unico che ha funzionato per me. Grazie! – duma

0

L'ho capito. Era un problema di configurazione di emacs. Questo piccolo elis nel mio .emacs lo stava causando:

(custom-set-variables 
'(fringe-mode nil nil (fringe)) 
'(fringes-outside-margins t t)) 

Grazie per l'aiuto.

-1

Falso allarme, che non l'ha risolto. Quello che ho trovato è che funziona bene se non ridimensiona la finestra. Posso riprodurlo piace:

  1. lanciare un pulito emacs -q
  2. Inizio ansi-termine e lo sfruttamento zsh
  3. Fai la finestra a schermo intero
  4. qualcosa di uscita che riempie lo schermo
  5. tipo CR
  6. Il prompt sarà fuori dallo schermo

Forse c'è un modo in cui posso rendere spazio tra l'uscita e il minibuffer più grande per compensare l'overshoot?

+2

Ciao! Si prega di modificare e aggiornare la domanda originale invece di aggiungere "risposte" con ulteriori informazioni. –

1

Stavo cercando questo anche da un po 'di tempo. Per me aggiungendo seguente al

;; ansi-term 

(global-set-key "\C-x\C-a" '(lambda()(interactive)(ansi-term "/bin/zsh"))) 
(global-set-key "\C-x\ a" '(lambda()(interactive)(ansi-term "/bin/zsh"))) 

opere. L'ho scelto da http://svn.assembla.com/svn/id774/scripts/dot_files/dot_emacs.d/elisp/global-set-key.el.

Sono sicuro che ci sono altre chicche in quella sceneggiatura. Come uno schermo bonus aggiunto sembra giocare bene con Emacs per me.

12

Prova MultiTerm.

È l'unica modalità di terminale Emacs che sembra giocare bene con zsh. Ti permette di impostare facilmente quali comandi vuoi catturare da emacs e quali vuoi indirizzare al terminale. Le impostazioni predefinite sono state abbastanza buone per me finora.

Inoltre, aggiungi il seguente comando al tuo .zshrc per consentire a emacs di tracciare la tua directory corrente mentre fai il cd.

if [ -n "$INSIDE_EMACS" ]; then 
    chpwd() { print -P "\033AnSiTc %d" } 
    print -P "\033AnSiTu %n" 
    print -P "\033AnSiTc %d" 
fi 
+1

Questo è fantastico. Sai come estendere questo alle connessioni ssh? (ad esempio assumendo che la mia shell sia connessa a una macchina remota su un particolare percorso). –

+0

@ AmelioVazquez-Reina - Vorrei averlo fatto. Sarebbe davvero utile. – bengineerd

0

Usa M-r per comando di ricerca della storia in emacs, non C-r