Soru Emacs kabuğunda bir sorun var


Ubuntu8.10 ve emacs-snapshot kullanıyorum. Emacs üzerinde kabuk modunu çalıştırmak ve "ls" girdisi çıkış kodlarını gösterir:

ekran görüntüsü http://lh3.ggpht.com/_os_zrveP8Ns/SdMmohKNjmI/AAAAAAAADB4/VlKpr5H_7ZA/s512/screen.png

Beklediğim çıktıyı nasıl alabilirim?


31
2018-04-01 08:39


Menşei


Eh, bu komik karakterler başkalarına bir ipucu sunabilir kaçış sıraları ('ESC' '[' '0' 'm'), ama ben belirli bir düzeltme bilmiyorum beri cevap vermeyeceğim. - paxdiablo


Cevaplar:


Kullanabilirsiniz AnsiTerm renkleri destekliyor veya etkinleştirebilirsiniz AnsiColor normal kabuk için:

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

45
2018-04-01 09:45



Bunun bir etkisi olması için, ansi-color-process-output olmalı comint-output-filter-functions. - updogliu


Ayrıca, başka bir kabuk seçebilirsiniz: M-x term veya M-x eshell. Birincisi, gerçek bir terminal emülatörüne çok daha yakın bir arayüz sağlar. shell-mode (bir kez başlattığınızda, moddan çıkabilirsiniz. C-c C-j ve tekrar içeri gir C-c C-k). İkincisi, Elisp'de yazılmış bir kabuk uygulamasıdır (ortak kabuk komutlarını kullanabilir ve Lisp kodunu değerlendirebilirsiniz).


5
2018-04-01 09:44



Eshell'i biliyorum ama bunu sevmiyorum, o kadar da güçlü değil. - linjunhalida
Genel amaçlı bir program olan langauge'ın daha az güçlü olduğunu söylüyorsun. kabuk? Sanırım onu ​​nasıl kullanacağını bilmiyorsun. - jrockway
Onu kastetmedim. Kabuğa karşı herhangi bir dil ile ilgili değil, ama shell-mode ve alternatifleri. Emacs içinde bir kabuk istiyorsanız, kendimi buldum term-mode Tamponun gerçek bir terminal gibi davranmasını sağlayan çok kullanışlı, ya da başka herhangi bir ortak Emacs tamponu olarak üzerinde çalışabilirsiniz. - Török Gábor


Genişleyen valincevabı, .cshrc (.tcshrc / .bashrc) 'in içine, ortam değişkeni için bir çek ile sarılmış olarak ekleyebilirsiniz. INSIDE_EMACS.

Örneğin (.tcshrc’den):

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

3
2018-04-01 15:47



İçin sh ve uyumlular, test "$INSIDE_EMACS" && alias l='ls --color=never' Yine de bir takma ad yerine bir işlev kullanmak isteyebilirsiniz. - tripleee


M-x ansi-color-for-comint-mode-on


2
2017-08-10 19:57





Sorun şu ki "l", çıktıyı renklendirmeye çalışıyor ve emacların hiçbiri yok. Takip etmeyi dene:

$ unalias l
$ alias l ls --color = asla

1
2018-04-01 09:03



Sadece emaclarda nasıl değiştirilir? - linjunhalida
TERM = muhtemelen aptal. - jrockway


Sarıldım alias ls ='ls --color=auto' ~ / .bashrc içinde:

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

Bu kullanarak devre dışı bırakır color=auto emaclarda.


1
2017-11-21 14:56