2009-04-01 34 views
31

Tôi sử dụng Ubuntu8.10 và ảnh chụp nhanh emacs. Chạy shell-mode trên emacs và đầu vào "ls" show thoát mã:Đã xảy ra sự cố với vỏ Emacs

screenshot http://lh3.ggpht.com/_os_zrveP8Ns/SdMmohKNjmI/AAAAAAAADB4/VlKpr5H_7ZA/s512/screen.png

Làm thế nào tôi có thể nhận được đầu ra như mong muốn?

+0

Vâng, những nhân vật hài hước đó là các chuỗi thoát ('ESC' '[' '0' 'm') có thể phục vụ cho người khác, nhưng tôi sẽ không trả lời vì tôi không biết sửa lỗi cụ thể. – paxdiablo

Trả lời

45

Bạn có thể sử dụng mà không AnsiTerm màu sắc hỗ trợ hoặc bạn có thể bật AnsiColor cho vỏ bình thường:

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t) 
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) 
+1

Lưu ý rằng để có hiệu ứng này, 'ansi-color-process-output' phải nằm trong 'comint-output-filter-functions'. – updogliu

1

Vấn đề là "l" đang cố tô màu đầu ra và các emacs không có bất kỳ thứ gì trong số đó. Hãy thử các cách sau:

 
$ unalias l 
$ alias l ls --color=never 
+0

làm thế nào để chỉ thay đổi nó trong emacs? – linjunhalida

+1

TERM = dumb ls, có thể. – jrockway

5

Ngoài ra, bạn có thể chọn một vỏ khác: M-x term hoặc M-x eshell. Trước đây cung cấp một giao diện gần giống với trình mô phỏng thiết bị đầu cuối thực hơn shell-mode (khi bạn khởi động nó, bạn có thể thoát khỏi chế độ với C-c C-j và vào lại với C-c C-k). Sau này là một thực thi shell được viết bằng Elisp (bạn có thể sử dụng các lệnh shell chung cũng như đánh giá mã Lisp).

+0

Tôi biết eshell, nhưng tôi không thích nó, không phải là mạnh mẽ. – linjunhalida

+1

Bạn đang nói một ngôn ngữ lập trình mục đích chung là ít mạnh mẽ hơn * shell *? Tôi nghĩ bạn không biết cách sử dụng nó. – jrockway

+0

Tôi không có ý đó. Nó không phải là về bất kỳ ngôn ngữ nào so với shell, nhưng là 'shell-mode' và các lựa chọn thay thế của nó. Nếu bạn muốn một shell bên trong Emacs, tôi thấy mình 'term-mode' thuận tiện, cho phép bộ đệm hoạt động giống như một terminal thực hoặc bạn có thể làm việc trên nó như bất kỳ bộ đệm Emacs chung nào khác. –

3

Mở rộng về câu trả lời vatine 's, bạn có thể thêm rằng bên cshrc của bạn (tcshrc/.bashrc) được bọc bằng séc cho biến môi trường INSIDE_EMACS.

Ví dụ (từ tcshrc của tôi):

if ($?INSIDE_EMACS) then 
    alias l 'ls --color=never' 
endif 
+0

Đối với 'sh' và compatibles,' test "$ INSIDE_EMACS" && alias l = 'ls --color = never'' mặc dù bạn có thể muốn sử dụng hàm thay vì bí danh. – tripleee

2

Mx ansi-màu-cho-COMINT-mode-on

1

tôi quấn alias ls ='ls --color=auto' tôi trong ~/.bashrc:

case "$TERM" in 
xterm*|rxvt*) 
    if [ -x /usr/bin/dircolors ]; then 
     alias ls='ls --color=auto' 
     ... 
    fi 
    ;; 
*) 
    ;; 
esac 

Điều này sẽ vô hiệu hóa bằng cách sử dụng color=auto trong các emacs.

Các vấn đề liên quan