سؤال كيفية تكوين PuTTY بحيث تعمل الصفحة الرئيسية / النهاية / PgUp / PgDn بشكل صحيح في باش؟


مفاتيح الصفحة الرئيسية ، النهاية ، PageUp ، PageDown كل اكتب a ~ في جلسة باشي بدلاً من تحريك المؤشر / العرض. لماذا يحدث هذا وأي إعدادات أحتاج لتغييرها؟

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

السؤال في الأصل يقرأ:

في PuTTY ، لماذا الضغط على مفتاح "Home" على shell (bash) اكتب "~"؟ أو بالأحرى ، كيف أقوم بتحريك المؤشر إلى بداية الأمر الذي قمت بكتابته؟

(اعتقدت أن السبب هو أن ~ هو الصفحة الرئيسية الدليل ، ولكن الإجابات تقول أن هذا ليس كذلك.)


112
2018-01-11 16:48


الأصل




الأجوبة:


قم بتغيير سلسلة نوع المحطة الطرفية ضمن علامة التبويب اتصال> بيانات من الافتراضي "xterm" إلى "linux". عملت معي.

enter image description here


137
2018-02-02 22:54



شكر! واجهت هذه المشكلة بعد أن قمت بعمل Ctrl Left / Right باستخدام هذه الطريقة (superuser.com/a/103097/45410). - Edwin Yip
التركيز: لا Terminal -> Keyboard "مفاتيح الوظائف ولوحة المفاتيح". - Elazar
يعمل ولكن يخلق مشاكل أخرى مثل تعطيل دعم الماوس. لذلك ، هذا ليس حلا مقبولا بالنسبة لي - Anton
كما يتيح هذا الحل علامات تعويضية داخل المعجون عند الاتصال بـ OS X! - lorem monkey


يحدث هذا لأنك لا تملك نوع طرفي PuTTY محددًا بشكل صحيح ، أو لأن خادمك لا يحتوي على تعريفات terminfo صحيحة مثبتة.

على أنظمة ديبيان ، فإن سأركع الأجل الحزمة (الإصدار 5.7 + 20081213-1) تتضمن ملفات تعريف terminfo لـ معجن، المعجون 256color و المعجون VT100 أنواع المحطة. إذا كنت قد قمت بتثبيت هذه الحزمة ، يمكنك تعيين "سلسلة من نوع المحطة الطرفية" إلى "المعجون" بدلاً من "xterm" الافتراضي في تكوين جلسة المعجون (اتصال -> بيانات).

يذكر ستيفن ايرونز أيضا "لينكس" كنوع طرفي آخر يعمل. أعتقد أن هذا صحيح من التجربة السابقة ، لكن لم أختبره مؤخرًا.

على الأنظمة الخاصة بي ، يسمح هذا لـ Home و End بالعمل بشكل صحيح ، بالرغم من أن PageUp / PageDown لا يقوم بتمرير إطار وحدة التحكم. (أنها تعمل بشكل صحيح في تطبيقات 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 (على سبيل المثال لـ Midnight Commander) - Anton
عملت "ncurses-term" عليّ على اختبار دبيان. - hochl
لا شيء من هذه الأعمال بالنسبة لي ، وأنا على المعجون الاتصال إلى centos ، ولا يمكن تشغيل yum تثبيت ncurses-term لأنني لست الجذر. - Herman Toothrot


إذا كنت تريد التحقق من الرمز الذي يتم إرساله بواسطة PuTTY إلى جهازك عندما تضغط على مفتاح أو مجموعة من المفاتيح ، فيجب عليك فقط إصدار Ctrl+V ثم اضغط على المفتاح المطلوب.

على سبيل المثال في المربع الخاص بي ، الضغط على الصفحة الرئيسية سوف يقوم المفتاح بإنشاء السلسلة التالية على الجهاز الخاص بي:

^[[1~

هذا يعني أن PuTTY يرسل حرف الهروب ^ [ متبوعًا بالسلسلة [1 ~.

يمكنك إنشاء ~/.inputrc ملف في الخاص بك $HOME مجلد ، أو بدلا من ذلك /etc/inputrc ملف اعتمادا على النظام الخاص بك. بعد ذلك ، املأ هذا الملف برموز PuTTY وإجراءات Bash المطابقة التي تريد تشغيلها بواسطة Bash.

ملاحظة: استبدال كل ^ [ شخصية من قبل ما يعادلها \ ه خيط

في المثال الخاص بي ، سأقوم بإضافة خط مع بلدي الصفحة الرئيسية رمز المفتاح و ابتداء من خط العمل (الذي يرتبط بشكل افتراضي Ctrl+A في باش):

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

لمعلوماتك ، يحتوي ملف 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: المزيد من الأوامر القابلة للربط (مثل التاريخ السابق: Move 'up' من خلال قائمة المحفوظات) المتاحة في هذه الصفحة المرجعية.


17
2017-09-26 21:59



نعم فعلا ! أخيرا ! لم تفعل سلسلة نهايات طرفي المعجون أي شيء للكلمة الخلفية وكلمة forward-forward. هذا عظيم ! - Cimbali
هذا هو الحل الوحيد المقبول لأن TERM=linux أو TERM=putty كسر دعم الماوس مثل xterm. شكر! - Anton


يأخذك Crtl + A إلى بداية السطر

هنا قائمة اختصارات لوحة المفاتيح باش


13
2018-01-11 17:02



هذا شيء عظيم وكل شيء ، ولكن Home / End متصلين في عقلي ، وبما أنني لا أقوم بإدارة الخادم إلا مرة واحدة في القمر الأزرق ، فإن فرص إلغاء الكشف عن الأسلاك الصلبة ضئيلة. - RomanSt


ما يرسل في الواقع هو ^[[1~وهو عبارة عن تسلسل هروب نهائي يتكون من:

  • ^ [- الهروب
  • [- قوس مربع الأيسر
  • واحد 1
  • ~ - تيلدا

يمكنك أن ترى ذلك عن طريق الضغط السيطرة+الخامس ثم الصفحة الرئيسية.

قد تتمكن من حل مشكلتك عن طريق تغيير إعداد لوحة مفاتيح PuTTY لمفاتيح البداية والنهاية إلى rxvt (مما يجعل تسلسل الهروب ^[[H أو عن طريق تغيير TERM $ الذي تستخدمه (أو عن طريق التعديل ~/.inputrc).

بالمناسبة ليس هناك علاقة بين التلدة التي تحصل عليها عند الضغط الصفحة الرئيسية والتلدة التي تمثل الدليل الرئيسي. على سبيل المثال ، في الإعداد الخاص بي اسفل الصفحة ينتج عنه ^[[6~ والتي من شأنها أيضا طباعة تيلدا إذا لم يتم تفسيرها بشكل صحيح.


9
2018-01-11 16:58



شكر! rxvt ثابت مفتاح المنزل. وينتج مفتاح النهاية الآن. PgUp / أسفل بالفعل اكتب ~، ولا شيء من إعدادات لوحة مفاتيح PuTTY تجعلها تعمل. هل تعثرت "باش"؟ أو هل هذا "عادي"؟ - RomanSt
ماذا تحصل عندما تكتب echo $TERM؟ - Dennis Williamson
xterm (15 حرفًا كحد أقصى) - 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


لم أتمكن من العمل مع الطرق الأخرى. على الرغم من أنني أنشأت هذا البرنامج النصي AutoHotkey الذي يعمل ، طالما أن shell الخاص بك هو Bash:

#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