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.