पुटी को कैसे कॉन्फ़िगर करें ताकि होम / एंड / PgUp / PgDn ठीक से काम करें?


122

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

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

मूल रूप से पढ़ा गया प्रश्न:

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

(मुझे लगता है कि इसका कारण यह था कि ~ होम डायरेक्टरी है, लेकिन जवाब कहते हैं कि ऐसा नहीं है।)

जवाबों:


149

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

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


2
धन्यवाद! इस विधि ( superuser.com/a/103097/45410 ) का उपयोग करते हुए Ctrl Left / Right काम करने के लिए मेरे मन में यह समस्या थी ।
एडविन यप

4
जोर: Terminal -> Keyboard"फ़ंक्शन कुंजी और कीपैड" नहीं।
इलाजरत

2
यह काम करता है लेकिन माउस समर्थन को अक्षम करने जैसी अन्य समस्याएं पैदा करता है। तो, यह मेरे लिए स्वीकार्य समाधान नहीं है
एंटोन

यह समाधान ओएस एक्स से कनेक्ट करते समय पोटीन के अंदर umlauts को भी सक्षम करता है!
लॉरेम बंदर

42

ऐसा इसलिए हो रहा है क्योंकि आपके पास PuTTY का टर्मिनल प्रकार सही तरीके से सेट नहीं है, या क्योंकि आपके सर्वर में सही टर्मोफ़ परिभाषाएँ स्थापित नहीं हैं।

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

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

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


हाँ, का उपयोग करना TERM=puttyया TERM=putty-256colorसमझदार है, हालांकि दुर्भाग्य से इस समय बाद में रंगों के लिए 8-15 (जो कि 0-4 के उज्ज्वल संस्करण माना जाता है) के लिए सही काम नहीं करता है। अन्य "समाधान" बहुत जल्दी बाहर निकलने की संभावना है, कभी-कभी इसमें शामिल टर्मिनलों के बीच मतभेदों के अपने प्रमुख अवहेलना के लिए करते हैं।
सैमबी

yum install ncurses-termअगले प्रवेश पर पोटीन के साथ CentOS 7 पर मेरे लिए इसे क्रमबद्ध किया, धन्यवाद।
ज़ोंबी

1
टर्मिनल प्रकार को puttyकाम करने के लिए सेट करता है लेकिन xterm की तरह माउस सपोर्ट (जैसे मिडनाइट कमांडर के लिए) को तोड़ता है
एंटोन

'ncurses-term' स्थापित करना मेरे लिए डेबियन परीक्षण पर काम किया।
hochl 13

मेरे लिए इनमें से कोई भी काम नहीं, मैं सेंटीको से कनेक्ट करने के लिए पोटीन पर हूं, और यम इंस्टॉल नहीं कर सकता ncurses-term क्योंकि मैं जड़ नहीं हूं।
हरमन टूथ्रोट

20

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

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

^[[1~

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

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

नोट: प्रत्येक ^ [ वर्ण को समतुल्य \ e स्ट्रिंग द्वारा बदलें

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

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

FYI करें, मेरी inputrc फ़ाइल में निम्न सामग्री है:

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: अधिक बाइंडेबल कमांड्स (जैसे पूर्व-इतिहास: इतिहास सूची के माध्यम से ऊपर ले जाएँ) ।


हाँ ! आखिरकार ! पुट्टी के टर्मिनल-टाइप स्ट्रिंग ने पिछड़े-शब्द और फॉरवर्ड-वर्ड के लिए कुछ भी नहीं किया। यह भी खूब रही !
सिम्बलि

1
यह केवल स्वीकार्य समाधान वजह से है TERM=linuxया TERM=puttyटर्म की तरह माउस समर्थन टूट गया। धन्यवाद!
एंटोन

14

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

यहां बैश कीबोर्ड शॉर्टकट की सूची दी गई है


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

9

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

  • ^ [- बच जाते हैं
  • [- बाएं वर्ग कोष्ठक
  • 1 एक
  • ~ - टिल्डे

आप देख सकते हैं कि दबा कर Ctrl+ Vतो Home

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

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


धन्यवाद! rxvt ने गृह कुंजी तय की; अंतिम कुंजी अब एक डिंग का उत्पादन करती है। PgUp / Down वास्तव में टाइप करते हैं ~, और कोई भी PuTTY कीबोर्ड सेटिंग उन्हें काम नहीं करती है। क्या मेरा बैश गड़बड़ है, या यह "सामान्य" है?
रोमनस्ट

टाइप करने पर आपको क्या मिलता है echo $TERM?
डेनिस विलियमसन

xterm(१५ वर्ण सीमा अर्घ)
रोमनस्ट

3
आप "\eOw": end-of-lineअपनी ~/.inputrcफ़ाइल में जोड़ने की कोशिश कर सकते हैं (यह एक बड़े अक्षर O है) ।
डेनिस विलियमसन

अंत कुंजी तय; मुझे विचार आता है। वास्तव में इस तरह हैक करना चाहते हैं, हालांकि आवश्यक नहीं थे ...
रोमन स्टैन

2

इन विकल्पों में से गैर ने मेरे लिए काम किया। मैं एक पुराना AIX सिस्टम चला रहा हूं। मुझे अपने लाभ के लिए निम्नलिखित उपनाम जोड़ने होंगे

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

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

1

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

#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

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


यह मैं इसे देख रहा हूँ मुख्य कारण के साथ गड़बड़ करेगा: screenजो कि डिफ़ॉल्ट सेटिंग्स के साथ Ctrl-A को तोड़ता है क्योंकि यह इसे एक भागने चरित्र के रूप में उपयोग करता है ....
Gert van den Berg
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.