हटाएं कुंजी कमांड लाइन पर काम नहीं करती है


10

** नोट: मैंने सुपरयूजर पर यही सवाल पूछा, लेकिन कोई प्रतिक्रिया नहीं मिली। मुझे अब एहसास हुआ कि यह इस विशेष प्रश्न के लिए एक अधिक उपयुक्त मंच है। *

एक ksh शेल में, हटाएं कुंजी कमांड लाइन पर उचित रूप से काम नहीं करती है । जब मैं हटाता हूं तो मुझे एक ~ मिलता है।

मैं कैसे:

  1. " कीबोर्ड पर चरित्र हटाएं" की कार्यक्षमता को हटाएं कीबोर्ड बटन? (कंट्रोल-डी ऐसा व्यवहार करता है जैसे मैं काम करने के लिए डिलीट बटन की उम्मीद करता हूं और एक अन्य का उपयोग करने के मेरे प्रयास असफल और संभावित थे।)
  2. होम कीबोर्ड बटन पर "लाइन के पहले पर जाएं " की कार्यक्षमता को बांधें ? (नियंत्रण ए अब ऐसा करता है, लेकिन मैं चाहता हूं कि होम ऐसा करे।)
  3. "कीबोर्ड के अंत में जाएं " की कार्यक्षमता को अंतिम कीबोर्ड बटन से बांधें ? (नियंत्रण ई अब ऐसा करता है, लेकिन मैं इसे करना चाहता हूं।)

अंतिम (?) अद्यतन

मैं कुछ है कि काम करता है पर ठोकर खाई, लेकिन मैं काफी क्यों समझ में नहीं आता है। यह काम:

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

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.

तो मेरा अद्यतन सवाल यह है कि मुझे इसके लिए उपयोग करने की आवश्यकता क्यों है prefix-2? कृपया मेरे लिए अनुवाद करें ताकि मैं समझ सकूं कि मुझे इस बारे में सभी को फिर से बग नहीं करना है।

पुराने स्टॉल शो

अपडेट करें

यह पता चला है कि QNX में ESC है ^[। कमांड का उपयोग करके bind '^[[3~'='delete-char-backward'मैं कर्सर को एक के साथ कर्सर के नीचे वर्ण को अधिलेखित करने में सक्षम हूं ~। यह कम से कम कुछ प्रगति है - मुझे अब पता है कि शेल के लिए डिलीट की को कैसे वर्तनी है । अधिकांश चीजें जो मैंने वेब पर देखी हैं, उनका कहना है कि डिलीट की है ^?, लेकिन वह मेरे लिए काम नहीं करती है। इसके अलावा, मुझे यह उल्लेख करना चाहिए कि मैं पुट्टी के माध्यम से इसे एक्सेस कर रहा हूं।

मुझे समझ नहीं आता क्योंकि कंट्रोल डी वो करता है जो मैं डिलीट की करना चाहता हूं। मैंने इसे eot-or-deleteफिर से किसी भी लाभ के लिए बांधने की कोशिश की ।

यह सरल होना चाहिए, है ना?

अद्यतन 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

अद्यतन 3: मेरी सेटिंग्स के और अधिक

ईएनवी सेटिंग

 echo $ENV
/etc/kshrc

पूरा उत्पादन बांधें

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 सेटिंग्स:

यहां छवि विवरण दर्ज करें

नोट जो कि मायने रखते हैं या नहीं, लेकिन पृष्ठभूमि प्रदान कर सकते हैं:

शेल "पीडी केएसएच v5.2.14 99/07 / 13.2" है। हां, मेरे पास अपग्रेड करने का कोई विकल्प नहीं है ... यह एक एम्बेडेड सिस्टम है। "एक आधुनिक शेल प्राप्त करें" एक व्यवहार्य उत्तर नहीं है। ऑपरेटिंग सिस्टम QNX Neutrino 6.4.1 है।

बाइंड निम्न दिखाता है:

 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 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बिना किसी लाभ के संशोधित करने का प्रयास किया है । मुझे लगता है कि sh: /etc/kshrc[21]: trap: bad signal KEYBDमेरे पास दुर्भाग्य से एक और शेल विकल्प नहीं है। मुझे नहीं पता कि यह PDKSH के साथ या QNX या दोनों के साथ कोई समस्या है। मुझे पता है कि प्रमुख संयोजनों से मुझे क्या चाहिए। मुझे बस उन्हें उपयुक्त कुंजियों पर मैप करने के लिए सिंटैक्स को जानना होगा।
21:39 पर kmort

डिलीट कुंजी मेरे लिए Pdksh के साथ काम करती है (एक ही संस्करण, इसे पिछली शताब्दी से बनाए नहीं रखा गया है) लिनक्स के तहत। आपके लिए क्या bind | grep prefixदर्शाता है? और bind | grep '[^ -~]'?
गिल्स एसओ- बुराई को रोकना '

@ गिल्स मैं आपके बाइंड कमांड के परिणामों के साथ अपडेट किया गया। क्या यह मेरी PuTTy सेटिंग्स हो सकती है? तुम्हारी सहायता सराहनीय है। :-)
किमीॉर्ट

AFAIK bind '^[[3~'='delete-char-forward'को काम करना चाहिए था। मुझे समझ में नहीं आता कि वे गैर-एएससीआईआई अक्षर कहां से आ रहे हैं (वे 8 वें बिट सेट के साथ ईएससी + फू अनुक्रम नहीं हैं, न ही लैटिन 1 / यूटीएफ 8 भ्रम)। क्या `बाइंड '^ X3 ~ = डिलीट-चार-फॉरवर्ड' काम करता है?
गिल्स एसओ- बुराई को रोकना '

जवाबों:


6

गोगलर्स के लिए:

वाह। कुछ के लिए जो इतना सरल होना चाहिए, यह कठिन था।

लघु समाधान (में delete कुंजी सेट करने के लिए निम्नलिखित का उपयोग करें kshrcया जहाँ भी),

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

और rxvtइसके बजाय अपने PuTTy टर्मिनल सेटिंग्स को सेट करें Standard

PuTTy सेटिंग्स

इस चीज़ ने मुझे काम करने में मदद की: http://www.mail-archive.com/misc@openbsd.org/msg817.html

ksh घर और अंत कुंजी के साथ मूर्खतापूर्ण बातें करता है। मूल रूप से, मैं इसे होम, एंड और डिलीट के बीच का अंतर एक ही समय में नहीं बता सका। जो भी अंतिम बाउंड था, तीनों कीज करेंगे। इन चाबियों के लिए पुट्टी ने जो भेजा उसे बदलने से काफी मदद मिली।

नोट: कुछ लोग सुझाव देते हैं कि यदि आप यह देखना चाहते हैं कि कुंजी को दबाने पर आपको कौन सा कोड मिल रहा है cat, तो टाइप करें , एंटर दबाएं, फिर कुंजी दबाएं। मेरे खोल के लिए, यह काम नहीं किया। मुझे ~सभी नियंत्रण कुंजियों के लिए मिला । मैंने इसके बजाय जो किया वह Escएक बार दबाएं , फिर कुंजी दबाएं। नियंत्रण कोड तब दिखाई देगा। उस नियंत्रण कोड का उपयोग करें bindऔर आप सभी सेट हैं।


मैं पुष्टि कर सकता हूं कि यह कॉनमू + साइगविन में भी काम करता है।
जनक मीणा १ '

2

[हालांकि हमारे पास कुछ अलग सेटअप है, मुझे उम्मीद है कि निम्नलिखित किसी के लिए उपयोग हो सकता है, जैसा कि मुझे लगता है कि कुछ समान सिद्धांत लागू होते हैं। यह मेरे लिए एक अच्छा सीखने का अनुभव साबित हुआ कि लिनक्स बुनियादी टर्मिनल i / o को कैसे संभालता है।]

यदि शेल ग्नोम टर्मिनल विंडो के अंदर चल रहा है , तो अंडर Preferences| Profilesप्रोफ़ाइल का चयन करें, फिर टैब का चयन करें Editऔर इसे Compatibilityबदल Delete key generatesदें Automatic। (या यदि यह विफल रहता है तो अन्य विकल्पों को वहाँ आज़माएँ।)

[मैं डेबियन स्ट्रेच पर हूं।]


मैं नहीं जानता कि कैसे, या यहां तक ​​कि जब मेरा डेल टूट गया, लेकिन यह सही के बजाय बाएं हटाना शुरू कर दिया!

यह लेख मेरे लिए यह समझने में बहुत मददगार था कि चीजें कैसे काम करती हैं।


मैंने ऊपर दिए गए लेख में सुझाई गई डिबगिंग रणनीतियों का उपयोग किया है:

टाइप ^v Delऔर ^v Backspace, [नियंत्रण-वी फिर कुंजी हटाएं ...] लौटे टर्मिनल अनुक्रम कोड को खोजने के लिए।

और उपयोग showkey -s, showkey -k, showkey -aऔर फिर Delऔर Backspaceकुंजी तीन परतों का निरीक्षण करने के (कुंजीपटल से कच्चे, tty ड्राइवर से आउटपुट के रूप में, और टर्मिनल के लिए दिया चरित्र स्ट्रिंग के रूप में)।

इससे मैंने देखा कि जब स्टेंट का उपयोग किया जाता है (जैसे stty1) कि xterm (ग्राफिकल एक्स टर्मिनल के भीतर से) का उपयोग करते समय मेरा शेल व्यवहार अलग था। Del ने स्टाइट 1 में सही ढंग से फॉरवर्ड (दाएं) डिलीट किया, लेकिन मेरे xterm में बैकवर्ड (लेफ्ट)।


अनुच्छेद एक मृत कड़ी है
दूध

1

मौजूदा दो उत्तर मेरे लिए लिनक्स (उबंटू 18.10) बैश से नहीं जा रहे थे, एसएसएच से लेकर सोलारिस 11.3 बैश तक, गनोम टर्मिनल का उपयोग करके।

मैंने पाया कि मुझे bindकमांड का उपयोग करने की आवश्यकता है , लेकिन काम के आसपास, क्योंकि मुझे Deleteकार्य करने के लिए एक देशी नहीं मिल सका ।

तो काम के आसपास है कि जब Deleteदबाया जाता है, को नष्ट करने के लिए और नष्ट करने के लिए कीपिंग मैपिंग द्वारा एक अनुकरणBackspace

bind '"^[[3~":"^[[C^?"'

टाइप करने के लिए, की-प्रेस का उपयोग करें:

CTRL-vDeleteपहले भाग के लिए
और CTRL-vCTRL-vBackspaceदूसरे के लिए।
(या \eइसके बजाय भागने के लिए उपयोग , उदाहरण के लिए "\e[3~")

यह सही नहीं है, यदि आप Deleteलाइन के अंत में हैं , तो यह अभी भी पीछे है। लेकिन यह मुझे ~एक दिन में चरित्र umpteen बार बैकस्पेस-आउट होने से बचाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.