सवाल PUTTY को कॉन्फ़िगर कैसे करें ताकि होम / एंड / PgUp / PgDn बैश में ठीक से काम कर सके?


चाबियाँ होम, एंड, पेजअप, पेजडाउन सभी टाइप ए ~ कर्सर को स्थानांतरित करने / चारों ओर देखने के बजाए मेरे बैश सत्र में। ऐसा क्यों होता है और मुझे किन सेटिंग्स को बदलने की ज़रूरत है?

GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60

सवाल मूल रूप से पढ़ा जाता है:

पुटी में, खोल (बैश) पर "होम" कुंजी दबाकर "~" टाइप क्यों होता है? या फिर, मैं इसे कर्सर को टाइप किए गए आदेश की शुरुआत में कैसे ले जाऊं?

(मैंने सोचा था कि कारण था कि ~ है होम निर्देशिका, लेकिन उत्तर कहते हैं कि ऐसा नहीं है।)


112
2018-01-11 16:48


मूल




जवाब:


टर्मिनल-प्रकार स्ट्रिंग को कनेक्शन> डेटा टैब को डिफ़ॉल्ट "xterm" से "linux" में बदलें। यह मेरे लिए काम किया।

enter image description here


137
2018-02-02 22:54



धन्यवाद! इस विधि का उपयोग करके Ctrl बाएं / दाएं काम करने के बाद मैंने यह समस्या महसूस की थी (superuser.com/a/103097/45410)। - Edwin Yip
जोर: नहीं Terminal -> Keyboard "फंक्शन कुंजियां और कीपैड"। - Elazar
यह काम करता है लेकिन माउस समर्थन को अक्षम करने जैसी अन्य समस्याएं पैदा करता है। इसलिए, यह मेरे लिए स्वीकार्य समाधान नहीं है - Anton
यह समाधान ओएस एक्स से कनेक्ट करते समय पुटी के अंदर उमोट्स को भी सक्षम बनाता है! - lorem monkey


ऐसा इसलिए हो रहा है क्योंकि आपके पास PUTTY का टर्मिनल प्रकार सही ढंग से सेट नहीं है, या क्योंकि आपके सर्वर में सही terminfo परिभाषाएं स्थापित नहीं हैं।

डेबियन-आधारित सिस्टम पर, ncurses अवधि पैकेज (संस्करण 5.7 + 20081213-1) में टर्मिनो परिभाषा फाइलें शामिल हैं पोटीन, पोटीन-256color तथा पोटीन-vt100 टर्मिनल प्रकार यदि आपके पास यह पैकेज स्थापित है, तो आप पुट्टी के सत्र कॉन्फ़िगरेशन (कनेक्शन -> डेटा) में डिफ़ॉल्ट "xterm" के बजाय "टर्मिनल-प्रकार स्ट्रिंग" को "पुटी" पर सेट कर सकते हैं।

स्टीफन इरन्स ने "लिनक्स" का उल्लेख एक और टर्मिनल प्रकार के रूप में किया है जो काम करता है; मेरा मानना ​​है कि यह पूर्व अनुभव से सही है, लेकिन हाल ही में इसका परीक्षण नहीं किया है।

मेरे सिस्टम पर, यह होम एंड एंड को सही तरीके से काम करने की अनुमति देता है, हालांकि पेजअप / पेजडाउन कंसोल विंडो स्क्रॉल नहीं करता है। (वे ncurses अनुप्रयोगों में ठीक तरह से काम करते हैं योग्यता, और Shift-PgUp / Shift-PgDn कंसोल विंडो स्क्रॉल करें।)


41
2018-02-03 00:21



हाँ, का उपयोग कर TERM=putty या TERM=putty-256color बुद्धिमानी है, हालांकि दुर्भाग्य से इस समय बाद वाले रंग 8-15 के लिए सही काम नहीं कर रहे हैं (जिन्हें 0-7 के चमकदार संस्करण माना जाता है)। अन्य "समाधान" कभी-कभी शामिल टर्मिनलों के बीच मतभेदों की उनकी झूठी अवहेलना के लिए फ्लेक होने की संभावना है। - SamB
yum install ncurses-term अगले लॉगिन पर पट्टी के साथ CentOS 7 पर इसे मेरे लिए सॉर्ट किया गया, धन्यवाद। - Wandering Zombie
टर्मिनल प्रकार को सेटिंग में putty काम करता है लेकिन xterm- जैसे माउस समर्थन तोड़ता है (उदाहरण के लिए मध्यरात्रि कमांडर के लिए) - Anton
डेबियन परीक्षण पर मेरे लिए 'ncurses-term' स्थापित करना। - hochl
मेरे लिए इनमें से कोई भी काम नहीं है, मैं सेंटी से जुड़ने वाली पट्टी पर हूं, और yum इंस्टॉल ncurses-term नहीं चला सकता क्योंकि मैं रूट नहीं हूं। - Herman Toothrot


यदि आप यह सत्यापित करना चाहते हैं कि जब आप कुंजी या कुंजी के संयोजन दबाते हैं तो पुटीटी द्वारा आपके कोड पर कौन सा कोड भेजा जाता है, तो आपको बस एक जारी करना होगा Ctrl+V और फिर वांछित कुंजी पर दबाएं।

उदाहरण के लिए, मेरे बॉक्स पर, दबाकर होम कुंजी मेरे टर्मिनल पर निम्न स्ट्रिंग उत्पन्न करेगा:

^[[1~

इसका मतलब है कि पुटी बचने के चरित्र भेजता है ^ [ स्ट्रिंग के बाद [1 ~

आप एक बना सकते हैं ~/.inputrc आपके अंदर फाइल करें $HOME फ़ोल्डर, या वैकल्पिक रूप से एक /etc/inputrc फ़ाइल आपके सिस्टम के आधार पर। फिर इस फ़ाइल को पुटी कोड और मिलान बैश क्रियाओं के साथ भरें जिन्हें आप बाश द्वारा ट्रिगर करना चाहते हैं।

नोट: हर जगह बदलें ^ [ समकक्ष द्वारा चरित्र \ ई तार

मेरे उदाहरण में, मैं अपने साथ एक लाइन जोड़ दूंगा होम कुंजी कोड और शुरुआत-लाइन की कार्रवाई (जो डिफ़ॉल्ट रूप से बाध्य है Ctrl+A बैश में):

"\e[1~": beginning-of-line

एफवाईआई, मेरी इनपुटआरसी फ़ाइल में निम्नलिखित सामग्री है:

set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
"\e[1~": beginning-of-line     # Home key
"\e[4~": end-of-line           # End key
"\e[5~": beginning-of-history  # PageUp key
"\e[6~": end-of-history        # PageDown key
"\e[3~": delete-char           # Delete key
"\e[2~": quoted-insert         # Insert key
"\eOD": backward-word          # Ctrl + Left Arrow key
"\eOC": forward-word           # Ctrl + Right Arrow key

@Cimbali से: अधिक बाध्यकारी आदेश (जैसे पिछले इतिहास: इतिहास सूची के माध्यम से 'ऊपर' ले जाएं) उपलब्ध हैं इस संदर्भ पृष्ठ पर


17
2017-09-26 21:59



हाँ ! आखिरकार ! पुट्टी की टर्मिनल-टाइप स्ट्रिंग ने पिछड़े शब्द और आगे-शब्द के लिए कुछ भी नहीं किया। यह भी खूब रही ! - Cimbali
यह एकमात्र स्वीकार्य समाधान है क्योंकि TERM=linux या TERM=putty xterm- जैसे माउस समर्थन तोड़ो। धन्यवाद! - Anton


सीआरटीएल + ए आपको लाइन की शुरुआत में ले जाता है

यहाँ एक है बैश कीबोर्ड शॉर्टकट की सूची


13
2018-01-11 17:02



यह बहुत अच्छा और सब कुछ है, लेकिन होम / एंड मेरे मस्तिष्क में कड़ी मेहनत कर रहे हैं, और चूंकि मैं नीले चंद्रमा में एक बार सर्वर का प्रबंधन करता हूं, इसलिए हार्ड-वायरिंग को बेकार करने की संभावनाएं पतली होती हैं। - RomanSt


वास्तव में यह क्या भेज रहा है ^[[1~जो एक टर्मिनल एस्केप अनुक्रम है जिसमें शामिल हैं:

  • ^ [- भागो
  • [- बाएं स्क्वायर ब्रैकेट
  • 1 एक
  • ~ - टिल्ड

आप इसे दबाकर देख सकते हैं Ctrl+वी फिर होम

हो सकता है कि आप घर और अंत कुंजी के लिए PUTTY कुंजीपटल सेटिंग को rxvt में बदलकर अपनी समस्या को ठीक कर सकें (जो बचने का अनुक्रम बनाता है ^[[H या $ TERM को बदलकर आप उपयोग कर रहे हैं (या संपादन करके ~/.inputrc)।

जिस तरह से आप दबाते हैं, उस टिल्ड के बीच कोई संबंध नहीं होता है होम और टिल्ड जो होम निर्देशिका का प्रतिनिधित्व करता है। उदाहरण के लिए, मेरे सेटअप में पन्ना निचे पैदा करता है ^[[6~ जो एक tilde भी मुद्रित करेगा अगर यह ठीक से व्याख्या नहीं किया जा रहा था।


9
2018-01-11 16:58



धन्यवाद! आरएक्सवीटी ने होम कुंजी तय की; अंत कुंजी अब एक डिंग पैदा करता है। PgUp / नीचे वास्तव में टाइप करें ~, और पुटी कीबोर्ड सेटिंग्स में से कोई भी उन्हें काम नहीं करता है। क्या मेरा बैश गड़बड़ है, या यह "सामान्य" है? - RomanSt
जब आप टाइप करते हैं तो आपको क्या मिलता है echo $TERM? - Dennis Williamson
xterm (15 वर्ण सीमा argh) - RomanSt
आप जोड़ने का प्रयास कर सकते हैं "\eOw": end-of-line (यह एक पूंजी पत्र ओ) है ~/.inputrcफ़ाइल। - Dennis Williamson
अंत कुंजी तय; मुझे विचार मिलता है। वास्तव में इस तरह हैक की इच्छा जरूरी नहीं थी ... - RomanSt


इन विकल्पों में से कोई भी मेरे लिए काम नहीं किया। मैं एक पुरानी AIX प्रणाली चला रहा हूँ। मुझे निम्नलिखित उपनामों को मेरे .profile में जोड़ना पड़ा

alias __A=$(print '\0020') # ^P = up = previous command
alias __B=$(print '\0016') # ^N = down = next command
alias __C=$(print '\0006') # ^F = right = forward a character
alias __D=$(print '\0002') # ^B = left = back a character

2
2018-01-22 22:22



मेरे लिए काम नहीं करता, बमर - Herman Toothrot


मैं इसे अन्य तरीकों से काम नहीं कर सका। हालांकि मैंने यह ऑटोहॉटकी स्क्रिप्ट बनाई है जो काम करता है, जब तक आपका खोल बैश है:

#IfWinActive ahk_class PuTTY
PgUp::Send +{PgUp}
PgDn::Send +{PgDn}
Home::Send ^a   ; beginning of line
End::Send ^e    ; end of line
+^Del::Send ^k  ; delete whole line after cursor
+End::Send ^k   ; delete whole line after cursor
+Home::Send ^u  ; delete whole line before cursor
^Del::Send !d   ; delete word after cursor
^BS::Send ^w    ; delete word before cursor
^Left::Send !b  ; jump word left
^Right::Send !f ; jump word right
#IfWinActive

सावधानी से प्रयोग करें हालांकि, चूंकि इन सभी बैश हॉटकी अन्य कार्यक्रमों में काम नहीं करते हैं।


1
2018-04-01 20:41



यह मुख्य कारण है कि मैं इसे देख रहा हूं: screen, जो डिफ़ॉल्ट सेटिंग्स के साथ Ctrl-A को तोड़ता है क्योंकि यह इसे एक बचने वाले चरित्र के रूप में उपयोग करता है .... - Gert van den Berg