Terminalde geri alma davranışı


1

Ben açtım zsh Fedora 13 çalıştıran uzak bir bilgisayarda (evet, eski). Yazarken geri tuşu her şey iyi çalışıyor ama yazarken hiçbir şey olmuyor ev ( Ctrl + bir işi beklendiği gibi yapar). Ama bir piton 2.7 denizaltı başlattığımda, benim geri tuşu baskılar ^? En son karakteri silmek yerine ev baskılar ^[OH, ve Ctrl + bir baskılar ^A.

Her zaman yolunda çalıştığı yerel makinedeki normal Linux Nane'deyken gördüğüm davranış bu değil. Bunun nasıl gerçekleştiğini ve bunu çözmek için ne yapabilirim bilen var mı? teşekkür ederim


2
Bunlar iki ayrı problemdir. Python yorumlayıcısı Readline kullanıyor olmalı, zsh ise kendi satır düzenleme kütüphanesini kullanıyor. Zsh hakkında fazla bir şey bilmiyorum, o yüzden sana yardım edemem. Python'un hangi versiyonunun sistemde olduğu ve ne olursa olsun PYTHONSTARTUP Çevre değişkeni?

@Brandon Teşekkürler. Sistem normalde python2.4 kullanıyor, ancak kendi python2.7.5'i kurdum ve 2.7.5 yolunu arayarak açıyorum. şimdi echo $PYTHONSTARTUP boş bir satır yazdırır. Ve benim PATH ile başlar bin python2.7.5 olan dizin. Eski python versiyonlarının konfigürasyonlarına ulaşmaya çalışıyor mu? Her kullanıcı kendi pitonunu oraya yerleştirdi.
rafa

Python'u oluştururken Readline desteğini devre dışı bırakmanız mümkün mü? Belirterek, yeniden oluşturmayı deneyin --enable-readline bir seçenek olarak configure senaryo.

Düzenleyerek bir şeyler yapabilirsiniz. ~/.inputrc dosya.
terdon

@BrandonInvergo, eğer yeniden kurarsam, kurulu olan tüm paketleri kaybeder miyim?
rafa

Yanıtlar:


0

@BrandonInvergo yorumlarda da belirtildiği gibi, bunlar iki farklı konu. Python'u bilmediğim için, yalnızca zsh belirli bir sorun.

Z kabuğu kullanır Z çizgi editörü (zle) kullanıcıyla etkileşim kurmak için. Anahtar bağlantıları, bindkey yerleşik man zshzle daha detaylı bilgi için). Farklı anahtar haritaları vardır; komut istemine yazdığınızda main kullanıyorsanız, keymap etkin zed (basit, ama genellikle çok uygun bir dosya editörü), keymap zed aktiftir vs.

Geçerli anahtar bağlantılarını bindkey -M [keymap], main keymap varsayılandır, yani çoğu Sadece ihmal edebileceğiniz davalar -M [keymap] parametre.

Şimdi, özel probleminize bir göz atalım:

CTRL+A (ile temsil edilen ^A ) çizginin başına atlar, bu yüzden muhtemelen kullandınız bindkey -e RC dosyalarınızda bir yerde (kişisel ~/.zshrc, ancak bazı sistem çapında yapılandırmalarda da verilebilir. /etc/zshrc ) etkinleştirmek için emacs anahtar bağlantıları:

$ zsh -f
$ bindkey -e
$ bindkey | head -n 3
"^@" set-mark-command
"^A" beginning-of-line
"^B" backward-char

Aynı davranışa sahip olmak HOME Bu tuşla, üretilen dizgiyi tanımlamanız gerekir (bu, kullandığınız terminal emülatörünüze bağlıdır). Basit bir numara ateş etmek cat ve istediğiniz tuşa basın. Bu kullanarak çıktı xterm için HOME ve END anahtar:

$ cat
^[[H^[[F

Yani, uzun metin, kısa mesaj - bu satırları ~/.zshrc dosya (ancak sonra bindkey -e komutu):

bindkey "^[[F" end-of-line
bindkey "^[[H" beginning-of-line

Ve lütfen unutma source ~/.zshrc... sonra bu iki anahtar istendiği gibi çalışmalıdır.


Teşekkürler, biraz yeniyim zsh. Gerçekten, dizelerim için home ve end Hangi ^[OH ve ^[OF, sonra çalışır. Ve daha çok alışkın olduğum gibi vi, Kullandım bindkey -v etkinleştirmek viins bunun yerine anahtar bağlantıları.
rafa
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.