ESC कुंजी अपने Alt + व्यवहार के कारण टर्मिनल में एक छोटी सी देरी का कारण बनती है


67

मेरा टर्मिनल सेटअप vi-bindings के साथ सूक्ति-टर्मिनल + tmux + zsh है।

Vim या यहाँ तक कि zsh के कमांड लाइन vi संपादन मोड में भी, मुझे अक्सर ESCकुंजी को हिट करने की आवश्यकता होती है, लेकिन इस कुंजी के प्रभाव से पहले एक छोटी सी देरी होती है। जीएनयू स्क्रीन देखें विम ESC कुंजी को धीमा कर देती है

कुछ प्रयोग के बाद, मैंने पाया कि ESCकुंजी मारना और तुरंत एक और कुंजी (कहना b) मारने का एक ही प्रभाव है Alt+b। मुझे नहीं पता कि ऐसा क्यों है (शायद विरासत कारणों से जब कोई नहीं था Alt? मुझे नहीं पता)। किसी भी तरह से, मेरे पास दो Altचाबियाँ हैं और मैं अपनी ESCकुंजी के साथ यह व्यवहार नहीं चाहता हूं । मैंने C+[इसके साथ और इसके साथ भी यही समस्या है।

मुझे यकीन नहीं है कि इसके लिए कौन जिम्मेदार है, सूक्ति-टर्मिनल या tmux या मेरा OS खुद (उबंटू नेट्टी)। इसे कैसे संबोधित किया जाए, इस पर कोई विचार।

अद्यतन : मैंने एक अलग टर्मिनल (LXTerminal) पर tmux के बिना जाँच की और देरी वहाँ भी मौजूद है।


1
मैं समझ नहीं पा रहा था कि मेरा विम अजीब क्यों काम कर रहा था। इस सवाल ने मुझे याद दिलाया कि मैंने स्क्रीन के भीतर इसका इस्तेमाल करना शुरू कर दिया था। आपने मेरी पवित्रता को बचाया।
पाब्लो

जवाबों:


111

यहाँ एक वास्तविक सुधार है। निम्नलिखित को इसमें जोड़ें .tmux.conf:

set -s escape-time 0

4
शानदार, धन्यवाद! विम में इंसर्ट मोड छोड़ने में देरी हुई और वास्तव में यह नहीं सोचा था कि यह टमक्स हस्तक्षेप हो सकता है। यह चाल
चली

7
जैसा कि superuser.com/questions/252214/… में उल्लिखित है, मुझे tmux kill-serverइसे प्रभावी करने के लिए करना था ।
फिल्ट

किसी को भी समझने के लिए क्यों भी विलंब होता है जब डालने मोड से स्विच बैश में vi मोड का उपयोग करते समय मोड कमान की कोशिश कर रहा है जो इस पृष्ठ पर पहुंच के लिए, देखें superuser.com/a/1161871/236677
क्वास

3
आप कॉन्फ़िगरेशन फ़ाइल पुनः लोड कर सकते हैं और उसके बाद tmux tmux-prefix(डिफ़ॉल्ट Ctrl+b) के साथ कमांड प्रॉम्प्ट को खोलकर :और दर्ज कर सकते हैं source-file $HOME/.tmux.conf
फोल्फी

7

देरी इनपुट रूटीन के कारण होती है, जिसे यह तय करना पड़ सकता है कि फ़ंक्शन कुंजी दबाया गया था या नहीं। इसके लिए इनपुट रुटीन एक टाइमर शुरू करता है जब भी वह ESC कैरेक्टर में पढ़ता है। वर्ण जो टाइमर से बाहर होने से पहले इनपुट से पढ़े जाते हैं (चलो एक सेकंड का दसवां हिस्सा कहते हैं) तब एक फ़ंक्शन कुंजी के ईएससी अनुक्रम के रूप में व्याख्या की जाती है और इस ईएससी-अनुक्रम की तुलना टर्मो या से ईएससी सेकंड के ज्ञात तार के साथ की जाएगी termcap data base (यह निर्भर करता है कि निम्न स्तर की दिनचर्या का उपयोग किया जाता है)।

यह उन अनुप्रयोगों के लिए कष्टप्रद है जहां ESC का उपयोग किया जाता है, लेकिन मुझे इसके लिए किसी भी समाधान की जानकारी नहीं है।

ESC a= के व्यवहार के साथ अपने प्रश्न के बारे में Meta a:

मेटा कीज़ सभी कीबोर्ड के साथ उपलब्ध नहीं थे। वर्कअराउंड के रूप में इसे अक्सर दूसरी कुंजी से पहले दबाए जाने वाले ESC कुंजी का उपयोग करने की अनुमति दी गई थी।


स्पष्टीकरण ktf के लिए धन्यवाद। विलंब केवल gvim में मौजूद नहीं है, केवल टर्मिनल में (मैंने tmux के बिना जाँच की और विलंब अभी भी है)।
श्रीकांत शरत

जीवीएम इस समस्या से ग्रस्त नहीं है, क्योंकि यह जानकारी प्राप्त करता है कि किस कुंजी को X11 सर्वर से दबाया गया था (इसलिए इसमें ESC अनुक्रम पार्स करने की आवश्यकता नहीं है)।
ktf

ठीक है, इसलिए मुझे अपने गनोम-टर्मिनल को उसी तरह से व्यवहार करने की आवश्यकता है।
श्रीकांत शरत

सूक्ति-टर्मिनल समस्या नहीं है - वर्णित समस्या केवल टर्मिनल पर चल रहे कार्यक्रमों (या टर्मिनल इम्यूलेशन) को प्रभावित करती है और फ़ंक्शन कुंजियों को पार्स करना है। आप उसी व्यवहार का अनुभव करेंगे, यदि आप उदाहरण के लिए xterm या KDE-Terminal का प्रयास करते हैं ।
ktf

2
"मेटा कुंजियाँ सभी कीबोर्ड के साथ उपलब्ध नहीं थीं। वर्कअराउंड के रूप में इसे अक्सर ईएससी कुंजी को दूसरी कुंजी से पहले दबाए जाने की अनुमति दी जाती थी।" शायद यह भी कि, ttys अक्सर केवल सात-बिट डेटा इंटरफेस था; कोई आठवाँ "मेटा बिट" नहीं था, इसलिए आपको मेटा के लिए एक ESC भेजना था। और आजकल UTF-8 व्यापक है, इसलिए आठ-बिट कनेक्शन के साथ भी आप मेटा के लिए उच्च बिट का उपयोग नहीं कर सकते हैं।
क्रिस पेज

3

हालांकि यह सीधे आपके मुद्दे को ठीक नहीं कर सकता है, मैंने पाया है कि मैं <Ctrl> cसम्मिलित मोड से बाहर निकलने के लिए उपयोग कर सकता हूं । यह भी tmux की स्क्रीन स्क्रॉलिंग से बाहर निकलने के लिए इस्तेमाल किया जा सकता है (जिसे इस्तेमाल करके इन्वाइट किया जा सकता है <leader> PgUP)


3
मैं <C-c>यह नियमित रूप से उपयोग में डालने मोड से बाहर निकलने के लिए उपयोग करने की सिफारिश नहीं करूंगा क्योंकि यह InsertLeaveऑटोकॉमैंड को नहीं चलाता है जो कुछ प्लगइन्स देख रहे होंगे। देखते हैं :h i_CTRL-C
श्रीकांत शरत
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.