** Lưu ý: Tôi đã hỏi câu hỏi tương tự trên SuperUser, nhưng không nhận được câu trả lời nào. Bây giờ tôi nhận ra đây là một diễn đàn phù hợp hơn cho câu hỏi cụ thể này. *
Trong trình bao ksh, phím Xoá không hoạt động phù hợp trên dòng lệnh. Tôi nhận được một ~ khi tôi nhấn Xóa.
Làm thế nào để tôi:
- liên kết chức năng "Xóa ký tự tại con trỏ" với nút Xóa bàn phím? (Control-D hoạt động như tôi mong đợi nút xóa hoạt động và những nỗ lực sử dụng bí danh của tôi không thành công và có khả năng là ngây thơ.)
- liên kết chức năng của " Di chuyển đến đầu dòng" với nút bàn phím Home? (Kiểm soát A thực hiện việc này ngay bây giờ, nhưng tôi muốn Home thực hiện nó.)
- liên kết chức năng của " Di chuyển đến cuối dòng " với nút Bàn phím kết thúc? (Kiểm soát E thực hiện điều này ngay bây giờ, nhưng tôi muốn kết thúc để làm điều đó.)
Cập nhật cuối cùng (?)
Tôi tình cờ thấy một cái gì đó hoạt động, nhưng tôi không hiểu tại sao. Những công việc này:
bind '^[[3'=prefix-2
bind '^[[3~'=delete-char-forward
Theo 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.
Vì vậy, câu hỏi cập nhậtprefix-2
của tôi là tại sao tôi cần phải sử dụng cho việc này? Hãy dịch cho tôi để tôi có thể hiểu vì vậy tôi không phải làm phiền mọi người một lần nữa về điều này.
TUỔI NHÂN VIÊN SAU
CẬP NHẬT
Hóa ra ESC trong QNX là ^[
. Sử dụng lệnh bind '^[[3~'='delete-char-backward'
tôi có thể lấy con trỏ để ghi đè ký tự dưới con trỏ bằng a ~
. Đây là một số tiến bộ ít nhất - bây giờ tôi biết cách đánh vần Xóa Khóa cho trình bao. Hầu hết mọi thứ tôi thấy trên web đều nói rằng phím xóa là vậy ^?
, nhưng dường như nó không hoạt động với tôi. Ngoài ra, tôi nên đề cập đến việc tôi đang truy cập thông qua PuTTy.
Tôi không hiểu vì Control D thực hiện những gì tôi muốn phím xóa thực hiện. Tôi đã cố gắng ràng buộc nó eot-or-delete
một lần nữa nhưng không có kết quả.
Điều này nên đơn giản, phải không?
CẬP NHẬT 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
CẬP NHẬT 3: Thêm cài đặt của tôi
Cài đặt ENV
echo $ENV
/etc/kshrc
BIND Hoàn thành đầu ra
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
Cài đặt PuTTy:
Những lưu ý có thể có hoặc không quan trọng, nhưng có thể cung cấp nền:
Vỏ là "PD KSH v5.2.14 99/07 / 13.2". Có, tôi không có tùy chọn để nâng cấp ... đó là một hệ thống nhúng. "Lấy một cái vỏ hiện đại" không phải là một câu trả lời khả thi. Hệ điều hành là QNX Neutrino 6.4.1.
liên kết hiển thị như sau:
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 hiển thị như sau:
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 cho thấy như sau:
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
để không có kết quả. Tôi nhận được sh: /etc/kshrc[21]: trap: bad signal KEYBD
tôi không có tùy chọn vỏ khác không may. Tôi không biết liệu đây có phải là sự cố với PDKSH hoặc với QNX hoặc cả hai không. Tôi biết những tổ hợp phím nào sẽ gây ra những gì tôi muốn. Tôi chỉ cần biết cú pháp để ánh xạ chúng tới các phím thích hợp.
bind | grep prefix
thể hiện cho bạn? Và bind | grep '[^ -~]'
?
bind '^[[3~'='delete-char-forward'
nên đã làm việc. Tôi không hiểu những ký tự không phải ASCII đó đến từ đâu (chúng không phải là chuỗi ESC + foo với tập bit thứ 8, cũng không phải là sự nhầm lẫn giữa latin1 / utf8). Liệu `bind '^ X3 ~ = xóa-char-Forward' có hoạt động không?