Emacs kabuk kipinde istemimi nasıl düzeltirim?


13

Bir meslektaşımın makinesinde programlama yapıyorum. Daha önce kullanmadığım bir emacs (23.1.1) sürümü var. Benim sorunum, kabuk moduna gittiğimde, bash istemim şöyle görünüyor:

^[]0;jay@socrates:~^G[jay@socrates]$ 

Ben var PS1ayarlı '[\u@\h]\$ 'skinTenimde .bashrc. Bunun gibi görünmesi gerekiyordu:

[jay@socrates]$

Normal bir kabukta böyle görünüyor. Ayrıca PS1'in emacs kabuğunda doğru değere ayarlandığını da kontrol ettim, bu yüzden şimdi fikirlerim bitti. İstediğim gibi görünmesini nasıl isteyebilirim?

Kullanmak için termveya eshellyerine bazı öneriler gördüm shell. termyukarıdakiyle aynı istem sorunu vardır ve bu gerçekten yardımcı olmaz bu yüzden eshelltamamen yok sayar PS1.

Yanıtlar:


13

Kabuğunuz XTerm'in (veya başka bir konsolun) başlığını / başlığını ayarlamaya çalışıyor. Bunun yapılmasının birkaç yolu vardır.

Öncelikle PS1'in gerçekten düşündüğünüz gibi olduğundan emin olun

echo $PS1 | less -E

Bu, komut isteminde kontrol karakterleri olup olmadığını söyleyecek, daha az komik görünmelerini sağlayacaktır. İsteminizin tam olarak söylediğiniz gibi olduğunu varsayarsak, muhtemelen PROMPT_COMMAND ortam değişkenidir. Buna aynı şekilde bakabilirsiniz ...

echo $PROMPT_COMMAND | less -E

Sorgu komutu sorunsa, ayarını kaldırabilirsiniz. Her iki durumda da, bu değişkenler bir yere kuruluyor ve XTerm'de değilseniz XTerm başlığını güncelleyecek şekilde ayarlanmamalıdır!

"Standart" bashrc (/ etc / bashrc) 'ye bakabilirsiniz. Yinelemeli bir kabuk (PS1 kümesidir) ve sonra xterm ($ TERM değişkenine bakarak) olup olmadığını denetleyen ve orada diğer terminal türlerinden farklı bir şey yapan kodu görmelisiniz.

Bası başlatmanın bir yerinde, yalnızca xterm uyumlu konsol programlarında yapılması gereken sabit kodlu bir kurulum olduğundan şüpheleniyorum. Aratabileceğiniz toplam dosyaların listesini bulmak için man bash'ı okuyun.

Yukarıdakilerin tümü başarısız olursa, deneyin

printenv | less

Ve orada şüpheli bir şey bulabilecek misiniz ve sonra nerede belirlendiğini takip edin. Eğer çalışamıyorsanız buraya gönderin.


1
PROMPT_COMMAND sorun oldu. Nerede ayarlandığından emin değilim, ancak ~ / .bashrc'ye ayarını kaldırmak için bir satır ekledim ve bu işe yarıyor. Teşekkürler!
Jay Conrod

PROMPT_COMMAND da beni öldürüyordu. MobaXTerm kullanıyorum ve PS1 ve PROMPT_COMMAND birleşimi olan özellikle karmaşık bir bash istemi var.
Steve Broberg

5

Aynı sorunla karşılaştım ve bunun nedeni PROMPT_COMMAND. Xterm unvanını beğendim. Bu yüzden ~ / .emacs_bash içine aşağıdaki satırı ekledim

export PROMPT_COMMAND=""

2

Emacs kabuğunun terminal tipi ile normal kabuğunuza karşı bir şey olabilir. TERMHer iki kabukta ortam değişkeninin neye ayarlandığını kontrol edin . Farklıysa, emacs kabuk terminal türünü değiştirebilmeniz veya emacs terminal türü için farklı bir PS1 tanımı kullanabilmeniz gerekir .bashrc.

Ayrıca deneyebilirsiniz M-x ansi-term(ve ansi-color-for-comint-mode-onrenk istemleriniz varsa).


1
aint-renk-comint-mode-on için bana yardımcı oldu!
Kullanıcı1

1

Bu, stackoverflow sitesinde çok iyi cevaplandı. Hazırlayan: Daniel Poe.

İşte cevabı.

Renkleri destekleyen AnsiTerm'i kullanabilir veya normal kabuk için AnsiColor'ı etkinleştirebilirsiniz:

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.