การใช้ปุ่มลูกศร ctrl กับ PuTTY และหน้าจอ


33

ฉันค้นหาและไม่สามารถหาวิธีแก้ปัญหานี้ได้ทุกที่ ฉันใช้ PuTTY จาก Windows เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ต่าง ๆ ที่ฉันใช้ bash และหน้าจอ ดูเหมือนว่าทุบตีทำงานได้ดีกับปุ่ม Ctrl - ลูกศรเพื่อข้ามคำต่อคำในบรรทัดคำสั่ง แต่ภายในหน้าจอมันไม่ทำงาน ไม่ได้อยู่ในหน้าจอ ctrl-left ส่ง "^ [OC และ ctrl-right คือ" ^ [OD "ภายในหน้าจอฉันได้รับ" ^ [[C "และ" ^ [[D "] ซึ่งปรากฏเป็นรหัสสำหรับ ปุ่มลูกศรซ้าย / ขวามีวิธีใดบ้างที่จะรับหน้าจอให้จดจำปุ่ม ctrl-arrow เมื่อใช้ PuTTY (FYI ฉันจำไม่ได้ว่ามีปัญหานี้เมื่อใช้ gnu-terminal ใน linux แทนที่จะเป็น PuTTY)

UPDATE: ดูเหมือนว่า PuTTY เป็นปัญหาเนื่องจากไม่ได้ส่งรหัสหลบหนีที่จำเป็นสำหรับการทำงาน ตอนนี้ฉันยอมแพ้และใช้ Cygwin + mintty


ว้าวมินต์นั้นยอดเยี่ยมมาก - กำลังมองหาเทอร์มินัลอีมูเลเตอร์ที่ดีสำหรับ Windows มาระยะหนึ่งแล้ว ขอบคุณสำหรับสิ่งนั้น
blueyed

อย่างไรก็ตามฉันจะได้รับ^[[1;5ACtrl-Up ซึ่งดูเหมือนจะถูกต้องมากขึ้นตามcode.google.com/p/mintty/wiki/Keycodes#Cursor_keys
สีฟ้า

คำตอบ:


13

แก้ไข:

นี่คือสิ่งที่ทำงานสำหรับฉัน:

  • ~/.bashrcชุดของฉันTERM=xterm(ฉันจะเกิดขึ้นTERM=xterm-256colors) หน้าจอที่เอาชนะTERM=screen
  • ฉันตั้งค่าPuTTY> เทอร์มินัล> คุณลักษณะ> ปิดใช้งานโหมดเคอร์เซอร์ของแอปพลิเคชันเพื่อตรวจสอบ
  • ฉันป้อนtput smkxที่พรอมต์ Bash
  • ตอนนี้ปุ่ม Ctrl-Arrow จะข้ามไปทีละคำ

  • สำหรับวัตถุประสงค์ในการให้ข้อมูลถ้าฉัน:
    tput smkx | hexdump -c
    ฉันจะได้รับ
    0000000 033 [ ? 1 h 033 =
    และ
    tput rmkx | hexdump -c
    ให้ฉัน
    0000000 033 [ ? 1 l 033 >

ฉันคิดว่ามีวิธีที่จะปรับปรุงสิ่งนี้ให้เป็นสิ่งที่ดีขึ้นนิดหน่อย แต่มันคือสิ่งที่ฉันทำมาแล้ว

คำตอบเดิม:

จากinfo screen:

แต่ละหน้าต่างในเซสชั่น `หน้าจอ 'จะจำลองเทอร์มินัล VT100 พร้อมกับเพิ่มฟังก์ชั่นพิเศษบางอย่าง VT100 อีมูเลเตอร์นั้นเป็นโค้ดที่แข็งไม่มีเทอร์มินัลชนิดอื่นใดที่สามารถจำลองได้

และ VT100s ไม่มีปุ่ม Ctrl-Arrow


set -o vi(ถ้าคุณเป็นประเภทของคน :)
MikeyB

1
@ MikeyB: นั่นช่วยได้อย่างไร (มันไม่ได้เป็นอย่างนั้น)?
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

ขอบคุณ ไม่ใช่คำตอบที่ฉันหวังไว้ แต่ตอนนี้ฉันสามารถก้าวต่อไปและใช้ชีวิตด้วยข้อ จำกัด นี้หรือใช้การเชื่อมโยงคีย์อื่น
kbosak

1
@Dennis: มันเป็นอีกวิธีหนึ่งในการจัดการกับการเดินหน้า / ถอยหลังถ้าคุณเป็นคนที่สามารถพิมพ์หัวคนรอบ ๆ ได้ set -o viเปิดโหมดบรรทัดคำสั่ง vi เพื่อให้คุณสามารถกดESCและใช้ปุ่ม vi เพื่อเลื่อนไปรอบ ๆ และแก้ไขบรรทัดคำสั่งของคุณ
MikeyB

1
@kbosak: ฉันไม่พอใจกับคำตอบนั้น นั่นเป็นเหตุผลว่าทำไมผมคงมัน :-)
หยุดชั่วคราวจนกว่าจะมีการแจ้งเตือนเพิ่มเติม

23

ดังที่กล่าวไว้ในที่นี้คุณสามารถใส่ ~ / .inputrc:

"\eOD": backward-word
"\eOC": forward-word

มันใช้งานได้สำหรับฉัน


5
สิ่งนี้ใช้ได้สำหรับฉันและง่ายกว่าคำตอบที่ยอมรับได้
Petrus Theron

สิ่งนี้ใช้ได้สำหรับฉันด้วยในขณะที่คำตอบที่ยอมรับไม่ได้
Schiavini

+1 คำตอบสั้น ๆ ที่ใช้งานได้
Adam Caviness

3
ตรวจสอบให้แน่ใจว่าได้$include /etc/inputrcอยู่ที่ด้านบนของ.inputrcไฟล์มิฉะนั้น readline จะไม่อ่านการเชื่อมโยงของระบบและปุ่มเช่น Home and End จะแตก
James

1
นี่ควรเป็นคำตอบที่ยอมรับได้!
Shailen

4

ฉันค่อนข้างประหลาดใจที่คุณมี Putty ส่ง ctrl-arrowkeys อย่างถูกต้องแม้ว่าจะไม่ได้ใช้หน้าจอเพราะมันไม่เคยทำงานให้ฉันเลย วิธีแก้ปัญหาของฉันคือเปลี่ยนไปใช้ alt-arrowkeys (meta-arrowkeys) ซึ่งฉันเชื่อว่ามีการเชื่อมต่อคำต่อคำ / ย้อนกลับคำเดียวกันในทุบตีโดยค่าเริ่มต้นแม้ว่าฉันจะต้องออกคำสั่งพิเศษสองสามคำ

bindkey "^ [^ [^ [[C" ฟอร์เวิร์ดคำ # Meta-RightArrow
bindkey "^ [^ [^ [ย้อนหลัง - คำ # Meta-LeftArrow

ฉันอาจไปเส้นทางนี้เช่นกัน ปุ่ม ctrl ซ้ายนั้นกดได้ง่ายกว่าเมตาดาต้าหรือปุ่ม alt (อย่างน้อยบนคีย์บอร์ดของฉัน) โอ้ดี
kbosak

4

ในกรณีที่คนอื่นพบคำถามเก่านี้เหมือนที่ฉันทำทางออกที่ใหม่กว่า:

ปุ่ม Ctrl และลูกศรไม่ทำงานในผงสำหรับอุดรู! ฉันจะทำอย่างไร

สีโป๊วกลับความรู้สึกของโหมดเคอร์เซอร์คีย์บน ctrl ซึ่งเป็นเรื่องยากสำหรับ tmux ในการตรวจสอบอย่างถูกต้อง หากต้องการรับคีย์ ctrl ให้เปลี่ยนการตั้งค่า terminfo ดังนั้น kUP5 (Ctrl-Up ฯลฯ ) เป็นรุ่นที่ปรับแล้วและปิดการใช้งาน smkx / rmkx ดังนั้น tmux จะไม่เปลี่ยนโหมด ตัวอย่างเช่นกับบรรทัดนี้ใน. tmux.conf (สมมติว่าคุณมี TERM ตั้งค่าเป็น xterm):

set -g terminal-overrides "xterm *: kLFT5 = \ eOD: kRIT5 = \ eOC: kUP5 = \ eOA: kDN5 = \ eOB: smkx @: rmkx @"

โปรดทราบว่าจะใช้งานได้ใน tmux 1.2 ขึ้นไปเท่านั้น

http://stuff.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ


0

คุณควรตรวจสอบเอกสารของ terminfo, ncurses, screen และ putty หากคุณต้องการ debug / configure อย่างเหมาะสม นอกจากนี้ยังสามารถกำหนดค่าทางลัด bash ด้วย inputrc ดูใน man page ของ bash และค้นหา inputrc


ฉันไม่คิดว่าปัญหาคือสิ่งที่อยู่ใน inputrc ฉันได้ลองวิธีแก้ปัญหาที่เป็นไปได้หลายอย่างที่เกี่ยวข้องกับการใส่รายการใน inputrc โดยไม่ประสบความสำเร็จ อีกครั้งปรากฏว่ามีการส่งรหัสที่ไม่ถูกต้องไปยังหน้าจอสำหรับปุ่ม ctrl-arrow ฉันไม่ต้องการใช้เวลากับสิ่งนี้มากกว่าที่ฉันมีอยู่แล้วเพราะมันเป็นความไม่สะดวกเล็กน้อย
kbosak

0

คุณมีการเข้ารหัสอักขระที่ถูกต้องใน Putty หรือไม่? หากคุณเชื่อมต่อกับเซิร์ฟเวอร์ใน UTF-8 และผงสำหรับอุดรูของคุณอยู่ในชุดอักขระมาตรฐานในกลุ่มที่เป็นปุ่มลูกศรจะถูกเขียน หาก Putty อยู่ใน UTF-8 คุณสามารถเลื่อนเคอร์เซอร์ของคุณ บางทีมันอาจจะเหมือนกันในกรณีของคุณ ...


มันไม่ใช่ปัญหา vi / vim เลยและฉันเห็นตัวเลือกเดียวใน PuTTY สำหรับชุดอักขระซึ่งไม่ได้ช่วย
kbosak

ลองใช้ตัวเลือกต่าง ๆ ใน Terminal-> Keyboard-> The Function keys and keypad BTW สำหรับฉัน Ctrl-Arrow ไม่ทำงานในการทุบตีอย่างใดอย่างหนึ่งมันทำเช่นเดียวกับโดยไม่ต้องกด Ctrl
ศ. Moriarty

ใช่ฉันได้ลองตัวเลือกมากมายและการรวมกันของตัวเลือกโดยไม่มีโชค ปีงบประมาณมีบางรายการที่คุณสามารถใส่อินพุทเพื่อช่วยเหลือเกี่ยวกับปุ่ม ctrl-arrow ในทุบตี แต่มันไม่ช่วยเมื่อใช้หน้าจอ
kbosak

0

ในการกำหนดค่าโป๊วของคุณภายใต้ Terminal -> Features มีช่องทำเครื่องหมาย "ปิดใช้งาน" สองสามรายการ คุณอาจต้องการลองปิดการใช้งานเคอร์เซอร์แอปพลิเคชันหรือโหมดแป้นกดแอปพลิเคชัน - บางครั้ง putty พยายามที่จะ "ฉลาดเกินไป" และส่งอักขระควบคุมที่เข้ากันไม่ได้กับเซิร์ฟเวอร์


0

ฉันใช้เทอร์มินัล> คีย์บอร์ด> ปุ่มฟังก์ชัน> Xterm R6 ที่ช่วยในการใช้ฟังก์ชั่นปุ่ม htop (f4 search ฯลฯ ) ตามที่คาดไว้

สิ่งที่ฉันค้นพบก็คือแทนที่จะใช้ CTRL + ลูกศร ALT + ลูกศรจะข้ามคำแทน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.