ความล่าช้าเล็กน้อยเมื่อเปลี่ยนโหมดในกลุ่มโดยใช้ tmux หรือหน้าจอ


68

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

การกำหนดค่า Vim ไม่ใช่ปัญหาเนื่องจากความล่าช้าไม่เกิดขึ้นเมื่อฉันเรียกใช้ Vim นอก tmux ดังนั้นนี่อาจเกี่ยวข้องกับ tmux ฉันใช้ gnome-terminal btw

นอกจากนี้ยังมีข้อควรระวังดูเหมือนว่าฉันไม่สามารถกำหนดการเชื่อมโยงที่สำคัญใน tmux สำหรับEscแผนของฉันคือการผูกEscกับ:

bind Escape send-keys ^[

อนิจจาดูเหมือนว่าสิ่งที่มีผลผูกพันEscสำหรับ tmux ไม่ทำงาน ปัญหาเดียวกันนี้เกิดขึ้นในหน้าจอเช่นกัน

คำตอบ:


122

หลังจากไถหน้าคนมันกลายเป็น tmux มีตัวเลือกสำหรับสิ่งนี้ ต่อไปนี้ในการ~/.tmux.confแก้ไขปัญหาความล่าช้า:

 set -sg escape-time 0

คุณต้องรีสตาร์ทเซิร์ฟเวอร์ tmux ของคุณหรือโหลดการกำหนดค่าของคุณใหม่เพื่อให้การทำงานมีผล หากต้องการทำสิ่งนี้ให้ออกsource-file ~/.tmux.confจากพรอมต์ tmux


2
คุณพบสิ่งนี้ที่ไหน ฉันไม่สามารถหาเวลาหลบหนีได้ทุกที่ในman tmuxและคำสั่งไม่ทำงานสำหรับฉัน
djeikyb

ฉันสงสัยว่ามีเฉพาะในเวอร์ชันการพัฒนาเท่านั้น คุณสามารถรับได้ที่นี่: github.com/ThomasAdam/tmux
Ton van den Heuvel

4
ฉันต้องใช้ tmux kill-server ก่อนการตั้งค่านี้ใช้ได้สำหรับฉัน ขอบคุณ!
Sam

1
นี่ทำให้ฉันหวังว่าฉันจะให้ 10 upvotes พบสิ่งนี้หลังจากหนึ่งชั่วโมงของการต่อสู้หมดเวลาในกลุ่ม ขอขอบคุณ!
malvim

1
@MichaelBrown ฉันทำเช่นกันและยังคงประสบปัญหานี้ ไม่ควรเป็นเรื่องจริงเพราะรหัสคีย์เดียวกันถูกส่งไปยังเทอร์มินัลอีมูเลเตอร์ไม่ว่าคุณจะกดปุ่ม Escape หรือ ^ [
Ton van den Heuvel

4

ฉันมีปัญหาอื่นที่คล้ายกันซึ่งฉันพยายามแก้ไขเมื่อพบหน้านี้ดังนั้นฉันจะโพสต์ที่นี่ในกรณีที่เป็นประโยชน์กับคนอื่นที่ค้นหาคำตอบนี้และค้นหาหน้านี้ในลักษณะเดียวกัน

ปัญหา: โหมด vi ใน bash มีความล่าช้าเมื่อเปลี่ยนจากโหมดแทรกเป็นโหมดคำสั่ง

วิธีแก้ไข:ใน~/.inputrcไฟล์ของคุณให้เพิ่มset keyseq-timeout nตำแหน่งที่nมีค่าต่ำมากกว่า 0 nค่าเริ่มต้นเป็น 500 มิลลิวินาทีซึ่งเป็นสาเหตุของความล่าช้า ดูเอกสารที่นี่

นอกจากนี้ถ้าคุณต้องการที่จะสามารถที่จะบอกโหมดที่คุณอยู่ในตรวจสอบส้อมดีแลนกาลีของทุบตี


ที่เป็นประโยชน์มากฉันตั้งไว้0.01และตอนนี้มันเร็วขึ้นอย่างน่าพอใจมากขึ้น ขอบคุณ!

นอกจากนี้ยังสามารถต่อท้าย/etc/inputrcเพื่อให้พร้อมใช้งานสำหรับผู้ใช้ทั้งหมด

1

ESCดูเหมือนว่าคุณกำลังใช้การทำแผนที่ที่ขึ้นต้นด้วย เมื่อคุณกดESC, เป็นกลุ่มที่มีการรอดูว่าที่สำคัญต่อไปคือหนึ่งในการทำแผนที่ที่ หากไม่ใช่จะสามารถดำเนินการต่อได้ทันที

การกำหนดค่า vim สามารถขึ้นกับเทอร์มินัลดังนั้นความจริงที่ว่ามันไม่ได้เกิดขึ้นนอก tmux นั้นไม่ได้มีความหมายอะไรมาก เป็นกลุ่มสามารถสอบถาม$TERMตัวแปรสภาพแวดล้อมและเลือกการกำหนดค่าที่แตกต่างกันขึ้นอยู่กับค่าของมัน

ตั้งแต่การใช้ gnome-terminal, AFAIK, xtermเป็นค่าของ$TERMตัวแปรและการใช้ tmux screenผมจะมองผ่านแฟ้มการกำหนดค่าของคุณทั้งหมดที่เป็นกลุ่มสำหรับการตั้งค่าที่ใช้เพียง แต่เป็นตัวแปรที่มีค่าเท่ากับ$TERM screenฉันเดาว่าบางไฟล์ config เป็นกลุ่มในระบบของคุณชุดแมปสำหรับการจัดการของปุ่มลูกศร (ที่เริ่มต้นด้วยESCตัวอักษร) screenเมื่อขั้วคือ

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

TERM=xterm vim

ใน tmux และดูว่าปัญหายังคงมีอยู่หรือไม่ คุณไม่ควรใช้สิ่งนี้เป็นตัวแก้ไขเนื่องจากอาจมีความแตกต่างระหว่างความสามารถของเทอร์มินัลของ tmux และ xterm และคุณอาจพบปัญหาบางอย่าง


ตัวชี้ที่ดีที่นี่ ฉันใช้ทุบตี แต่น่าเสียดายที่TERM=xterm vimไม่ได้แก้ปัญหา ฉันจะต้องขุดลึกลงไปอีกหน่อย
Ton van den Heuvel

1

ในฐานะที่เป็นชื่อกล่าวถึงหน้าจอนี่คือวิธีการแก้ไขพฤติกรรมของปุ่ม Escape ภายในหน้าจอ GNU (นำมาจากที่นี่ )

เพิ่ม

maptimeout 5

เพื่อกำหนดค่า.screenrcไฟล์

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