Bash, ^ H ve ^ küresel olarak nasıl düzeltilir? geri silme sorunları


12

Uzaktaki bir sunucudaki kabuğun terminalimin geri tuşu anahtarını ^?düşündüğü ve bazen bunun ^Hyanlış olduğunu düşündüğü ve yanlış olduğu ve geri tuşuna bastığımda yanlış karakter çıkardığı bu sık sorunu düzeltmek istiyorum . ^ H veya ^? ile stty erase ^Hveya stty erase ^?.bashrc dosyamda ve sunucuya erişmek için başka bir terminal kullanın, genellikle yanlış sonuçlanır. Geri stty erase [whatever]tuşunun yanlış olduğunu fark ettiğimde düzeltmek için elle yazmak zorunda kaldım.

Ne yapmak istiyorum olduğunu bağlama hem ^?ve ^Hgeriye doğru, bunu yapabilirim, ben sadece benim Bashrc tüm dosyaları ekleyebilirsiniz ve kesinlikle bu kabusu sona erecek çünkü. Mümkün mü? Öyleyse nasıl?

Yanıtlar:


8

Bu sayfada bu konuda ihtiyaç duyacağınız tüm bilgiler bulunmaktadır; Okumanızı öneririm. Şimdi, şu satırları içeren bashbir ~/.inputrcdosya oluşturmak yeterli olacaktır :

"\e[3~": delete-char
# this is actually equivalent to "\C-?": delete-char
# VT
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# kvt
"\e[H":beginning-of-line
"\e[F":end-of-line
# rxvt and konsole (i.e. the KDE-app...)
"\e[7~":beginning-of-line
"\e[8~":end-of-line

Ek bir bonus olarak, onlar da yapacak Homeve Endçalışacaklar.


2

Http://web.archive.org/web/20120621035133/http://www.ibb.net/~anne/keyboard/keyboard.html adresindeki bilgilerin çoğu gerçekten ihtiyacınız olan şeydir. Bilgiye yönelik bir düzeltme onların önerisidir (XTerm için):

*VT100.Translations: #override \
          <Key>BackSpace: string(0x7F)\n\
          <Key>Delete:    string("\033[3~")\n\
          <Key>Home:      string("\033[1~")\n\
          <Key>End:       string("\033[4~")
*ttyModes: erase ^? 

Bu, XTerm'in doğru karakteri göndermesini ve backspace olarak ^?stty'yi değiştirmesini sağlarken, yine de ^Hbazı durumlar altında yanlışlıkla backspace olarak rapor verecek, yani Vim instert modunda backspace'i kıracak (buraya bakın: https://bugs.gentoo.org / 154090 ). Bundan kaçınmak için VT100.backarrowKey: falsebunun yerine şunu kullanın :

*VT100.backarrowKey: false
*VT100.Translations: #override \
          <Key>Delete:    string("\033[3~")\n\
          <Key>Home:      string("\033[1~")\n\
          <Key>End:       string("\033[4~")
*ttyModes: erase ^? 

(ayrıca bakınız [lütfen bağlantıyı buraya ekleyin])


Yorum yapmaya nasıl başlayabileceğinizi anlamanız için "Yorum yapmak için neden 50 itibara ihtiyacım var" bölümünü okuyun.
Pezevenk Suyu

Kimseden açıklığa gerek duymadım. Aksine, yukarıdaki cevaba açıklama ve küçük bir düzeltme yapıyordum. Ancak, bu bir cevapta belgeleniyorsa, öyle olsun. Etrafındaki metni tam bir cevap haline getirdim.
amosonn

Ayrıca, bu bağlantı cevabımda eksik, ancak oraya ekleyemiyorum. wiki.archlinux.org/index.php/Xterm#Fix_the_backspace_key
amosonn
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.