2009-10-14 17 views
13

Tôi đang cố gắng lấy vỏ Emacs của mình để bắt chước các phiên đầu cuối tiêu chuẩn của mình. Về cơ bản tôi muốn nó tôn trọng cùng một PATH cũng như dấu nhắc lệnh.Bắt Emacs để tôn trọng các tùy chọn shell + mặc định của tôi

Cho đến nay tôi có một vài vấn đề:

  • PATH không được tìm thấy, dưới đây là sửa chữa Tôi đang sử dụng cho điều đó.
  • Tôi nhận được mã màu ascii khắp nơi với một bản sửa lỗi khác mà tôi đã thử.

Tôi có thông tin sau trong tệp mwilliams.el của mình. Một vài dòng đầu tiên cho phép tôi truy cập vào/usr/local/bin trong M-x shell, giải quyết một nửa vấn đề và vài dòng cuối cùng khiến tôi chạy với Zsh nhưng dấu nhắc của tôi là rất vặn.

(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin")) 
(setq exec-path (append exec-path '("/usr/local/bin"))) 


(defun shell() 
    (interactive) 
    (ansi-term "/bin/zsh")) 

Với phần trên, tôi nhận được những điều sau đây trong suốt khi tôi M-x shell.

4m\342/236/234 

Các chế độ được sử dụng là: (Term: char chạy yas)

Theo như tôi có thể nói nó không tôn trọng một số các mã màu ascii trong chủ đề Zsh tôi. Tuy nhiên tôi nhìn thấy một vài màu sắc đi qua; vì vậy nó là một nửa ở đó. Đoán tốt nhất của tôi là tôi cần nó để tôn trọng .zshrc của tôi có chứa thông tin về chủ đề của tôi và PATH.

Tôi chỉ bị ướt chân ở Emacs và lấy vỏ cứng là một trong những điều cuối cùng tôi cần trước khi tôi có thể bắt đầu di chuyển công việc hàng ngày của mình (và mọi thứ khác) sang Emacs.

Tôi đang chạy Emacs 23.1 (9.0) trong OSX Snow Leopard.

Trả lời

16

Tôi không sử dụng zsh nhưng tôi đã tìm thấy điều này trong số zsh FAQ và thử. Tôi có một ls đầy màu sắc không có nhân vật sôi nổi.

 
3.10: Why does zsh not work in an Emacs shell mode any more? 

Read more: http://www.faqs.org/faqs/unix-faq/shell/zsh/#ixzz0TyTJsHMq 

phương pháp khác là đặt

#!/bin/sh 
TERM=emacs exec zsh 

vào một tập tin ~/bin/eshell, sau đó chmod +x ~/bin/eshell, và nói với emacs để sử dụng như là vỏ bằng cách thêm

(setenv "ESHELL" (expand-file-name "~/bin/eshell")) 

để ~/.emacs.

+0

Tuyệt vời, phương pháp số 2 hoạt động như một sự quyến rũ! Cảm ơn! – mwilliams

+0

Tôi nhận được 'Process shell exited bất thường với mã 1 \ nopen terminal failed: không thể tìm thấy cơ sở dữ liệu terminfo' khi thực hiện điều này. Một trong hai bạn có trải nghiệm điều này không và liệu bạn có thể vượt qua nó không? –

1

Đối với đường dẫn, có gói exec-path-from-shell (chỉ dành cho OS X).

Nó được $MANPATH, $PATHexec-path từ vỏ và đặt chúng cho emacs.