ปัญหากับหน้าจอ GNU เมื่อใช้ Emacs Cx Cs (บันทึกบัฟเฟอร์)


33

เมื่อฉันใช้ emacs ภายใต้หน้าจอ GNU ถ้าฉันเรียกหน้าจอ Cx Cs ค้างและไม่ตอบสนองต่อการป้อนข้อมูลของแป้นพิมพ์

ฉันไม่สามารถทำซ้ำได้ แต่อย่างน้อยหนึ่งครั้งต่อวันฉันต้องฆ่าเซสชันของหน้าจอและเริ่มต้นใหม่

ฉันจะแก้ปัญหานี้ได้อย่างไร

ขอบคุณ


อันไหน Unix? มีความแตกต่างมากมายในการจัดการอุปกรณ์ปลายทางระหว่าง Linux, BSD, Solaris, ...
grawity

1
ฉันใช้ Putty เพื่อ ssh ไปเป็นอินสแตนซ์ของ Ubuntu Server LTS
simao

คำตอบ:


52

CtrlSคืออักขระควบคุมการไหล "หยุดชั่วคราว" (XOFF) โดยปกติจะจัดการโดยไดรเวอร์ tty หรือในหน้าจอกรณีนี้ ตรงข้ามของมันคือ XON CtrlQหรือ

เมื่อคุณเปิดใช้งาน Emacs โดยปกติแล้วจะใช้เวลามากกว่าตัวละครพิเศษส่วนใหญ่ (ไม่ใช่แค่การควบคุมการไหล แต่ยังเป็นCtrlC"Interrupt" ตามปกติด้วย)

  • ใช้C-a :flow offเพื่อปิดการใช้งานโฟลว์คอนโทรลสำหรับหน้าต่างหน้าจอนี้

    ยืนยันด้วยC-a :info(มองหา-flowในป๊อปอัป)

  • ถ้ามันไม่ได้ช่วยให้ลองหรือstty -ixonstty stop undef

    (คุณสามารถทำได้จากหน้าต่างแยกโดยใช้stty -f /dev/tty1หรือstty </dev/tty1.)

บนระบบของฉัน (Linux) หน้าจอจะสังเกตเห็นเมื่อปิดการควบคุมการไหลสำหรับ tty แม้ว่าระบบปฏิบัติการของคุณอาจมีข้อ จำกัด บางประการ


:flow offทำงาน ขอบคุณ! มีวิธีใดที่ฉันจะทำให้เป็นถาวร
simao

1
@simao: ดูในหน้าคู่มือของdefflow screen
grawity

3
อธิบายอย่างละเอียดเกี่ยวกับความคิดเห็นของ @simao และ @ grawity - หากต้องการปิดใช้งานการควบคุมการไหลอย่างถาวร (ฉันถือว่านี่เป็นผลลัพธ์ที่ต้องการสำหรับคนส่วนใหญ่) ให้เพิ่มบรรทัดdefflow offลงใน~/.screenrcไฟล์ของคุณหรือสร้างหนึ่งในโฮมไดเรกทอรีของคุณ นี่ก็เพียงพอแล้วที่จะอนุญาตให้ emac ของฉันทำงานได้อย่างถูกต้องภายในscreenหน้าต่าง ควรพิจารณาวิธีการนี้ก่อนที่จะผูกกุญแจซ้ำ
pscl

2
นี่เป็นการแก้ปัญหาสำหรับฉัน แต่ฉันยังไม่ได้เรียนรู้ว่าทำไมหน้าจอ "ทั้งหมดในทันที" ถูกนำเข้าสู่โหมดนี้ .... อาจจะมีบางปุ่มกดบนหน้าจอที่ช่วยให้การควบคุมการไหลของฉันพิมพ์โดยไม่ได้ตั้งใจ ... ?? ?
malcook

1
เรากำลังพูดถึงหน้าจอ GNU และ GNU Emacs และพวกเขาไม่ได้คิดหาวิธีที่จะทำให้ทั้งสองทำงานได้อย่างราบรื่นหรือไม่? ...
yves Baumes

4

ฉันมีปัญหาเดียวกันกับหน้าจอล็อคและอีกมากมายเมื่อใช้ emacs ภายใต้หน้าจอ ตัวอย่างเช่น Ca in emacs ที่นำคุณไปสู่จุดเริ่มต้นของบรรทัดถูกดักหน้าจอและมันไม่ทำงาน

วิธีการแก้:

สร้างไฟล์. screenrc ในโฮมไดเร็กตอรี่ของคุณด้วย:

#Change escape character to C-u 
escape "^uu"                                                                    
#unbind ctrl+s from xoff in order to be able to search in emacs                 
bind s                                                                          
bind ^S                                                                         
#unbind ctrl+x from lockscreen in order to be able to save in emacs             
bind x                                                                          
bind ^X                                                                         

จากนั้นทุกครั้งที่คุณเปิดหน้าจอใหม่แทนที่จะใช้ Ca คุณจะต้องใช้ Cu เพื่อป้อนคำสั่งหน้าจอใหม่ การเปลี่ยนแปลงอีกสองรายการจะดูแลสิ่งต่าง ๆ อีกสองอย่างที่ฉันต้องเปลี่ยนเพื่อให้สามารถใช้ emacs ใต้จอได้โดยไม่มีปัญหา


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