** Hinweis: Ich habe dieselbe Frage in SuperUser gestellt, aber keine Antwort erhalten. Mir ist jetzt klar, dass dies ein geeigneteres Forum für diese spezielle Frage ist. *
In einer ksh-Shell funktioniert die Entf-Taste in der Befehlszeile nicht ordnungsgemäß . Ich erhalte ein ~, wenn ich Entf drücke.
Wie mache ich:
- Binden Sie die Funktionalität von "Zeichen am Cursor löschen" an die Schaltfläche Tastatur löschen? (Control-D verhält sich so, als würde die Löschtaste funktionieren, und meine Versuche, einen Alias zu verwenden, waren erfolglos und wahrscheinlich naiv.)
- Binden Sie die Funktionalität von " Zum ersten der Zeile verschieben" an die Home-Tastaturtaste? (Kontrolle A macht das jetzt, aber ich möchte, dass Home es macht.)
- Binden Sie die Funktionalität von " An das Ende der Zeile verschieben " an die Schaltfläche "Tastatur beenden ". (Control E macht das jetzt, aber ich möchte, dass es zu Ende geht.)
Letztes (?) Update
Ich bin auf etwas gestoßen, das funktioniert, aber ich verstehe nicht ganz warum. Das funktioniert:
bind '^[[3'=prefix-2
bind '^[[3~'=delete-char-forward
Laut http://www.qnx.com/developers/docs/6.3.2/neutrino/utilities/k/ksh.html#bind ,
prefix-2
Key binding: ^X, ^[[
Introduces a 2-character command sequence.
Meine aktualisierte Frage lautet also, warum ich das verwenden muss prefix-2
. Bitte übersetzen Sie für mich, damit ich verstehen kann, damit ich nicht alle erneut darüber nerven muss.
ALTES PERSONAL FOLGT
AKTUALISIEREN
Es stellt sich heraus, dass ESC in QNX ist ^[
. Mit dem Befehl kann bind '^[[3~'='delete-char-backward'
ich den Cursor dazu bringen, das Zeichen unter dem Cursor mit a zu überschreiben ~
. Dies ist zumindest ein Fortschritt - ich weiß jetzt, wie man den Löschschlüssel für die Shell buchstabiert . Die meisten Dinge, die ich im Web gesehen habe, besagen, dass der Löschschlüssel ist ^?
, aber das scheint für mich nicht zu funktionieren. Außerdem sollte ich erwähnen, dass ich über PuTTy darauf zugreife.
Ich verstehe das nicht, weil Control D genau das tut, was ich mit der Löschtaste tun möchte. Ich versuchte es eot-or-delete
erneut ohne Erfolg zu binden .
Das sollte einfach sein, oder?
UPDATE 2:
bind | grep prefix
^X = prefix-2
^[ = prefix-1
ÿ = prefix-3
^[O = prefix-2
^[[ = prefix-2
bind | grep '[^ -~]'
ÿ = prefix-3
à = beginning-of-line
à¡ = up-history
ठ= backward-char
ঠ= forward-char
ਠ= end-of-line
à© = down-history
ଠ= delete-char-forward
à´ = backward-word
ච= forward-word
UPDATE 3: Weitere Einstellungen
ENV-Einstellung
echo $ENV
/etc/kshrc
BIND Complete Output
bind
^A = beginning-of-line
^B = backward-char
^C = abort
^D = eot-or-delete
^E = end-of-line
^F = forward-char
^G = abort
^H = delete-char-backward
^I = complete
^J = newline
^K = kill-to-eol
^L = redraw
^M = newline
^N = down-history
^O = newline-and-next
^P = up-history
^R = search-history
^T = transpose-chars
^U = kill-line
^V = version
^W = kill-region
^X = prefix-2
^Y = yank
^[ = prefix-1
^\ = no-op
^] = search-character-forward
^^ = quote
^_ = eot
^? = delete-char-backward
ÿ = prefix-3
^[^H = delete-word-backward
^[^X = complete-file
^[^[ = complete
^[^] = search-character-backward
^[ = set-mark-command
^[# = comment
^[* = expand-file
^[. = prev-hist-word
^[0 = set-arg
^[1 = set-arg
^[2 = set-arg
^[3 = set-arg
^[4 = set-arg
^[5 = set-arg
^[6 = set-arg
^[7 = set-arg
^[8 = set-arg
^[9 = set-arg
^[< = beginning-of-history
^[= = complete-list
^[> = end-of-history
^[? = list
^[C = capitalize-word
^[L = downcase-word
^[O = prefix-2
^[U = upcase-word
^[[ = prefix-2
^[_ = prev-hist-word
^[b = backward-word
^[c = capitalize-word
^[d = delete-word-forward
^[f = forward-word
^[g = goto-history
^[h = delete-word-backward
^[l = downcase-word
^[u = upcase-word
^[y = yank-pop
^[^? = delete-word-backward
^X^X = exchange-point-and-mark
^X^Y = list-file
^X^[ = complete-command
^X? = list-command
^XA = up-history
^XB = down-history
^XC = forward-char
^XD = backward-char
^XH = beginning-of-line
^XP = delete-char-forward
^XY = end-of-line
^Xc = forward-word
^Xd = backward-word
^Xw = end-of-line
à = beginning-of-line
à¡ = up-history
ठ= backward-char
ঠ= forward-char
ਠ= end-of-line
à© = down-history
ଠ= delete-char-forward
à´ = backward-word
ච= forward-word
/ etc / kshrc
/etc # cat kshrc
case $- in
*i*)
export SHELL_COLOR_BLUE="print -n \\033[0;34m"
export SHELL_COLOR_GREEN="print -n \\033[0;32m"
export SHELL_COLOR_RED="print -n \\033[0;31m"
export SHELL_COLOR_LIGHTGRAY="print -n \\033[0;37m"
export SHELL_COLOR_YELLOW="print -n \\033[1;33m"
export COLOR_BLACK="\\033[0;30m"
export COLOR_BLUE="\\033[0;34m"
export COLOR_GREEN="\\033[0;32m"
export COLOR_CYAN="\\033[0;36m"
export COLOR_RED="\\033[0;31m"
export COLOR_PURPLE="\\033[0;35m"
export COLOR_BROWN="\\033[0;33m"
export COLOR_LIGHTGRAY="\\033[0;37m"
export COLOR_DARKGRAY="\\033[1;30m"
export COLOR_LIGHTBLUE="\\033[1;34m"
export COLOR_LIGHTGREEN="\\033[1;32m"
export COLOR_LIGHTCYAN="\\033[1;36m"
export COLOR_LIGHTRED="\\033[1;31m"
export COLOR_LIGHTPURPLE="\\033[1;35m"
export COLOR_YELLOW="\\033[1;33m"
export COLOR_WHITE="\\033[1;37m"
if [[ `id -u` -eq 0 ]]; then
export PS1=`$SHELL_COLOR_RED`'$(hostname -s):'`$SHELL_COLOR_YELLOW`'$(pwd) # '`$SHELL_COLOR_LIGHTGRAY`
else
export PS1=`$SHELL_COLOR_BLUE`'$(hostname -s):'`$SHELL_COLOR_GREEN`'$(pwd) $ '`$SHELL_COLOR_LIGHTGRAY`
fi
esac
PuTTy-Einstellungen:
Hinweise, die wichtig sein können oder nicht, aber Hintergrundinformationen liefern können:
Die Shell ist "PD KSH v5.2.14 99/07 / 13.2". Ja, ich habe keine Option zum Aktualisieren ... es ist ein eingebettetes System. "Get a modern shell" ist keine brauchbare Antwort. Das Betriebssystem ist QNX Neutrino 6.4.1.
bind zeigt folgendes:
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 zeigt folgendes:
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 zeigt folgendes:
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
kshrc
sie ohne Erfolg zu ändern . Ich sh: /etc/kshrc[21]: trap: bad signal KEYBD
habe leider keine andere Shell-Option. Ich weiß nicht, ob dies ein Problem mit dem PDKSH oder mit QNX oder beiden ist. Ich weiß, welche Tastenkombinationen das bewirken, was ich will. Ich muss nur die Syntax kennen, um sie den entsprechenden Schlüsseln zuzuordnen.
bind | grep prefix
zeigt sich für Sie? Und bind | grep '[^ -~]'
?
bind '^[[3~'='delete-char-forward'
hätte funktionieren sollen. Ich verstehe nicht, woher diese Nicht-ASCII-Zeichen kommen (es handelt sich weder um ESC + foo-Sequenzen mit gesetztem 8. Bit noch um latein1 / utf8-Verwirrungen). Funktioniert `bind '^ X3 ~ = delete-char-forward'?