ksh의 커서에서 문자를 삭제하려면 삭제 키를 바인딩하세요.

ksh의 커서에서 문자를 삭제하려면 삭제 키를 바인딩하세요.

사용해야 하는 QNX Neutrino 쉘에서 삭제 키가 제대로 작동하지 않습니다. 누르면 ~가 뜹니다.

나의 최종 목표는 키보드의 삭제, 홈, 종료 키가 Windows 명령 셸에서처럼 작동하도록 하는 것입니다.

"커서 위치의 문자 삭제"를 키보드 삭제 버튼에 어떻게 바인딩하나요? 별칭을 사용하려는 시도는 실패했습니다.

중요할 수도 있고 그렇지 않을 수도 있지만 배경 정보를 제공할 수 있는 참고 사항:

  • PD KSH v5.2.14 99/07/13.2 입니다.
  • Control-D는 삭제 버튼이 작동할 것으로 예상하는 것처럼 작동합니다.
  • 바인딩은 다음을 보여줍니다.
bind | grep del
^D = eot-or-delete
^H = delete-char-backward
^? = delete-char-backward
^[^H = delete-word-backward
^[d = delete-word-forward
^[h = delete-word-backward
^[^? = delete-word-backward
^XP = delete-char-forward
ଠ= delete-char-forward
  • infocmp는 다음을 보여줍니다.
infocmp
 #      Reconstructed via infocmp from file: /usr/lib/terminfo/x/xterm
xterm|vs100|xterm terminal emulator,
        am, km, mir, msgr, xenl, xon,
        cols#80, it#8, lines#65, vt@,
        acsc=Oa``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=@, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
        cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
        dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
        el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I,
        hts=\EH, ich=\E[%p1%d@, ich1=\E[2~, il=\E[%p1%dL, il1=\E[L,
        ind=^J, is1=\E=\E[?1l, kBEG=\ENn, kCPY=\ENs, kCRT=\ENt,
        kDL=\ENv, kEXT=\ENw, kFND=\ENx, kHLP=\ENy, kOPT=\ENz,
        ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOq, kcan=\EOm, kclo=\ENc,
        kclr=\ENa, kcmd=\EOu, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
        kcuu1=\E[A, kdch1=\E[P, kend=\E[9, kf1=\E[11~, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf2=\E[12~, kf3=\E[13~,
        kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
        kf9=\E[20~, kfnd=\ENf, khlp=\ENh, khome=\E[8, khts=\ENb,
        kich1=\E[2~, kmov=\ENi, kmrk=\ENm, kmsg=\ENe, knp=\E[6~,
        kopn=\ENo, kopt=\ENk, kpp=\E[5~, kref=\ENl, kres=\ENp,
        krfr=\ENg, krpl=\ENr, krst=\ENj, ksav=\ENq, kslt=\EOM,
        ktbc=\ENd, kund=\ENu, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
        rmam=\E[?7l, rmkx=\E>, rmso=\E[m,
        rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, rs2=@,
        sc=\E7,
        setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
        setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m,
        sgr0=\E[m, smacs=^N, smam=\E[?7h, smkx=\E=, smso=\E[7m,
        tbc=\E[3g,
  • stty는 다음을 보여줍니다.
stty
Name:  /dev/ttyp0
Type:  pseudo
Opens: 2
+edit +echok +echonl
+osflow
 intr=^C  quit=^\ erase=^?  kill=^U   eof=^D start=^Q  stop=^S  susp=^Z
lnext=^V   min=01  time=00   pr1=^[   pr2=5B  left=44 right=43    up=41
 down=42   ins=40   del=50  home=48   end=59
  • 컨트롤 A와 컨트롤 E는 Home과 End 키를 원하는 것처럼 작동합니다.

이것이 누군가에게는 정말 쉬운 점이었기를 바랍니다. 저는 이것을 어떻게 조합해야 할지 잘 모르겠습니다.

답변1

Google 직원의 경우:

에서https://unix.stackexchange.com/questions/66434/delete-key-doesnt-work-on-command-line

bind '^[[3'=prefix-2
bind '^[[3~'=delete-char-forward

관련 정보