2008-12-15 18 views
15

J'ai essayé d'utiliser Zsh dans ma session emacs, sans remapper emacs toutes les clés Zsh. J'ai trouvé qu'Ansi-term fonctionne plutôt bien mais j'ai encore des problèmes. Je recevais beaucoup de caractères indésirables avec en sortie, j'ai pu le fixer avec:Obtenir emacs ansi-term et Zsh pour bien jouer

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

Mais tout ne fonctionne toujours pas parfaitement. Maintenant, j'ai des problèmes avec la sortie de l'écran, surtout lorsque j'utilise quelque chose comme C-r pour la recherche.

Aucune idée. Quelqu'un d'autre a Zsh + Ansi-terme qui fonctionne correctement?

+3

1 - vous n'êtes pas le seul. Cependant, je ne rencontre ce problème que sur mac en mode tty. – SetJmp

Répondre

3

Hmmm. Je ne pense pas avoir jamais vu de montage sophistiqué fonctionner correctement dans le cadre d'un contrat à terme, bien que je ne l'ai pas essayé depuis 20 ans. Je vais juste vous demander, en passant, si vous avez essayé le shell-mode (M-x shell) car c'est beaucoup plus naturel avec EMACS de toute façon. Cela dit, en lisant le fichier term.el, on dirait que ansi-term fait beaucoup de manœuvres. vous pourriez vouloir regarder le terme code de mode brut, commençant autour de la ligne 1230, au moins dans EMACS 22.3.

+0

'shell' était le seul qui a fonctionné pour moi. Merci! – duma

0

Je l'ai compris. C'était un problème de configuration emacs. Ce peu d'élisp dans mes .emacs en était la cause:

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

Merci pour l'aide.

-1

Fausse alarme, qui ne l'a pas réparée. Ce que j'ai trouvé, c'est que cela fonctionne bien si vous ne redimensionnez pas la fenêtre. Je peux le reproduire comme:

  1. Lancer une emacs propre -q
  2. Démarrer ansi terme et l'utilisation zsh
  3. Faire fenêtre en plein écran
  4. quelque chose de sortie qui remplit l'écran
  5. type Cr
  6. L'invite sera hors de l'écran

Peut-être qu'il y a un moyen de rendre le l'espace entre la sortie et le mini-tampon plus grand pour compenser le dépassement?

+2

Salut! S'il vous plaît modifier et mettre à jour votre question originale au lieu d'ajouter "réponses" avec plus d'informations. –

1

Je cherchais cela aussi depuis un moment maintenant. Pour moi ajoutant suivant à la

;; 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"))) 

fonctionne. J'ai choisi cela de http://svn.assembla.com/svn/id774/scripts/dot_files/dot_emacs.d/elisp/global-set-key.el. Je suis sûr qu'il y a d'autres goodies dans ce script. Comme un écran bonus ajouté semble bien jouer avec emacs pour moi.

12

Essayez MultiTerm.

C'est le seul mode de terminal Emacs qui semble bien fonctionner avec zsh. Il vous permet de définir facilement les commandes que vous souhaitez capturer par Emacs et que vous souhaitez acheminer vers le terminal. Les paramètres par défaut ont été assez bons pour moi jusqu'à présent.

Ajoutez également ce qui suit à votre fichier .zshrc pour permettre à emacs de suivre votre répertoire actuel pendant que vous naviguez.

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

C'est génial. Savez-vous comment étendre cela aux connexions SSH? (par exemple en supposant que mon shell s'est connecté à une machine distante sur un chemin particulier). –

+0

@ AmelioVazquez-Reina - J'aimerais le faire. Ce serait vraiment utile. – bengineerd

0

Utiliser M-r pour la recherche d'historique de commandes dans emacs, pas C-r