IPython 5 kullanırken garip kabuk çıkışı


37

IPython'un en yeni sürümüne yeni geçtim ve şimdi emacs'te kullanırken bir şeyler yanlış.

Düzenli bir terminalde kullanıldığında iyi çalışıyor (renkler, sekme tamamlama vb.), Ancak çıktı almak yerine ya M-x eshellda çıktı M-x shell, In [1]:aslında çıktı verir [?12l[?25hve Out[1]çıktı verir [J[?7h[?12l[?25h[?2004l[?7hOut[1]:.

Belki de IPython tarafından kullanılan emaclarda bulunmayan terminalin bir özelliğidir, ancak hangisinin olduğunu bilmek istiyorum.

Terminal.app:

In [1]: 2+2
Out[1]: 4

Emacs

[?12l[?25h2+2
[J[?7h[?12l[?25h[?2004l[?7hOut[1]: 4

Giriş yolunda bir hata mı açtınız? Hiçbir şey bulamadım, ancak Gmane elden geçirilmiş halde ATM aramak biraz zor.
rasmus

2
Başvuru için, yukarı akış hata # 25306
npostavs

Yanıtlar:


41

IPython 5, Emacs'in alt kabukları ile uyumlu olmayan yeni bir terminal arayüzüne sahiptir. Düzeltmek için --simple-promptbayrağı IPython komutuna ekleyin :

(setq python-shell-interpreter "ipython"
    python-shell-interpreter-args "--simple-prompt -i")

Belgelerden:

Yeni arayüz Emacs'ın 'aşağı kabuk' özelliği ile uyumlu değil. Bunu kullanmaya devam etmek için --simple-promptbayrak Emacs'ın çalıştığı komuta ekleyin . Bu bayrak, çoğu IPython özelliğini devre dışı bırakır ve sekme tamamlama gibi şeyler sağlamak için Emac’lara güvenir.

Referans: http://ipython.readthedocs.io/en/stable/whatsnew/version5.html#id1


6
Evet, ilk başta yaptığım şey buydu, ancak multiline desteğinin olmaması (fonksiyon tanımları için en önemli olanı), ipython 4'e geri dönmeme neden oldu.
Edebi

3
Bu bayrağın ayarlanması Elpy ile değişkenler boyunca hala çok kullanışlıdır python-shell-interpreter-args. Elpy'yi denemediyseniz kontrol etmelisiniz. İşlev tanımlarınızı ayrı bir tamponda yazmanıza ve bunları tek bir komutla kolayca tercümana iletmenize olanak tanır. Bu durumda, tüm Emacs'in düzenleme komutlarından faydalanabilir ve her iki dünyanın en iyisi olan etkileşimli bir oturum alabilirsiniz.
Ricardo Lima

1
Ayrıca linke yazılı olmasının bir sebebi @Literal: kullandıkları değiştirildi readlineiçin prompt_toolkitipython 5. üzerinde prompt_toolkitfarklı çalışır Emacs kabukları ile uyumlu değildir termolarak bildiğim kadarıyla, kabuklar fazla gibi çalışan amacıyla aptal terminalleri çalıştırın: Standart bir Emacs tamponu iken termgerçek bir tam terminal emülatörünü çalıştırır. Kabukları ile uyumlu, readlineancak ile uyumlu görünüyor prompt_toolkit, bu kaçış dizileri gösteren istemi açıklar. Yana termçalışır tam terminali, doğru çıkış sıralarını yorumlar.
Ricardo Lima

1
Kabul etmedim çünkü diğer özellikleri korumak isterdim, belki de daha fazla özellik içeren başka bir kabuk modu kullanmak. Ama sanırım onunla yaşamak zorunda kalacağım.
Edebi

1
!? O ipython Bu vs.% sihirli komutları, giriş / çıkış tarihi, kabuk komutları, yardım komutları gibi şeyler tutar vb tamamlanması, renkler gibi, UI ile ilgili özellikleri devre dışı bırakır @CodyChan
jpkotta

0

IPython'u emacs kabuğundaki --simple-prompt kullanmadan açmanın bir yolu var

1. pip install rlipython

2. Open IPython in terminal

3. Run import rlipython; rlipython.install() 

Bundan sonra, görüntüleme problemi yaşamadan ipython'u doğrudan emacs kabuğu içinde açabilmelisiniz.

Yine de benim durumumda bir sorun daha var: Bazı nedenlerden dolayı, ekran doğrulandıktan sonra bile, bazı çok satırlı sınıf tanımlarını doğrudan emacs kabuğundaki ipython'a kopyalayıp yapıştıramadım. Mevcut çözümüm% Ipython% paste komutunu kullanmaktır. Daha iyi yaklaşımların varsa, lütfen bana bildirin.

Not: Ubuntu 16.04 kullanıyorum. Birisi MacOS kullanıyor, IPython'u bozduğunu söylüyor.



İpython kurulumunu bozuyor
Diogo

hangi yolla? benim için iyi çalışıyor
DataHungry

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.