Tmux या स्क्रीन का उपयोग करके मोड में स्विच करते समय थोड़ा विलंब


68

विम में डालने और मोड से स्विच करने के लिए अब तात्कालिक नहीं है क्योंकि मैं tmux का उपयोग करता हूं। Escइन्सर्ट मोड में दबाने के बाद , वास्तव में इन्सर्ट मोड से बाहर निकलने में ध्यान देने योग्य समय लगता है। दबाने के बाद Escऔर किसी भी अन्य कुंजी के बाद स्विच तत्काल है, और कुंजी के लिए कमांड Escनिष्पादित होने के बाद दबाया जाता है। किसी भी विचार यह क्या कारण हो सकता है?

विम कॉन्फ़िगरेशन समस्या नहीं है क्योंकि विलंब तब नहीं होता है जब मैं विम को tmux के बाहर चलाता हूं, इसलिए यह संभवतः किसी तरह tmux से संबंधित है। मैं सूक्ति टर्मिनल btw का उपयोग करें।

यह भी ध्यान देने योग्य है, ऐसा लगता है कि मैं tmux में मुख्य बाइंडिंग को परिभाषित नहीं कर सकता Esc, मेरी योजना यह थी Esc:

bind Escape send-keys ^[

काश, यह Esctmux के लिए कुछ भी बाध्यकारी लगता है काम नहीं करता है। यही समस्या स्क्रीन में भी होती है।

जवाबों:


122

मैन पेज के माध्यम से जुताई के बाद यह पता चलता है कि tmux के पास इसके लिए एक विकल्प है। निम्नलिखित ~/.tmux.confसमस्या को ठीक करता है:

 set -sg escape-time 0

आपको अपना tmux सर्वर पुनः आरंभ करना होगा या प्रभावी होने के लिए अपना कॉन्फिगर पुनः लोड करना होगा। ऐसा करने के लिए, source-file ~/.tmux.conftmux प्रॉम्प्ट से जारी करें ।


2
आपको यह कहां से मिला? मुझे कहीं भी भागने का समय नहीं मिल रहा है man tmux, और कमांड मेरे लिए काम नहीं करता है।
djeikyb

मुझे संदेह है कि यह केवल विकास संस्करण में उपलब्ध है। : आप यहाँ प्राप्त कर सकते हैं github.com/ThomasAdam/tmux
टन वैन अड्डा Heuvel

4
इस सेटिंग ने मेरे लिए काम करने से पहले मुझे tmux किल-सर्वर का उपयोग करना था। धन्यवाद!
सैम

1
यह मुझे इच्छा है कि मैं तुम्हें 10 upvotes दे सकता है। विम में टाइमआउट से जूझने के एक घंटे के बाद यह मिला। धन्यवाद!
malvim

1
@MichaelBrown, मैं भी करता हूं, और अभी भी इस समस्या को हिट करता हूं। यह वास्तव में मायने नहीं रखना चाहिए, क्योंकि एक ही कुंजी कोड टर्मिनल एमुलेटर को भेजा जाता है, भले ही आप भागने या ^ [दबाएं]।
टन वैन डेन हेउवेल

4

मेरे पास एक अलग लेकिन समान मुद्दा था जिसे मैं हल करने की कोशिश कर रहा था जब मुझे यह पृष्ठ मिला, इसलिए मैं यहां पोस्ट करूंगा कि यह किसी और के लिए उपयोगी है जो इस उत्तर की तलाश में है और इस पृष्ठ को उसी तरह से ढूंढता है।

समस्या: आवेषण मोड से कमांड मोड में स्विच करने पर vi मोड में देरी होती है

समाधान: अपनी ~/.inputrcफ़ाइल में, set keyseq-timeout nजहाँ nकुछ कम मान है n, वह ०.५ चूक से अधिक ५०० ग्राम है, जो कि देरी का कारण बनता है। यहाँ प्रलेखन देखें ।

इसके अलावा, यदि आप यह बताना चाहते हैं कि आप किस मोड में हैं, तो डायलन कैली के कांटे को देखें


यह बहुत मददगार है, मैं इसे 0.01और अब इसके सुखदायक और अधिक तेजी से सेट करता हूं । धन्यवाद!

इसे /etc/inputrcसभी उपयोगकर्ताओं के लिए उपलब्ध कराने के लिए जोड़ा जा सकता है ।

1

ऐसा लगता है कि आप एक मैपिंग का उपयोग कर रहे हैं जो इसके साथ शुरू होता है ESC। जब आप दबाते हैं ESC, तो विम को यह देखने के लिए इंतजार करना पड़ता है कि अगली कुंजी मैपिंग में है या नहीं। यदि यह नहीं है, तो यह तुरंत जारी रह सकता है।

विम कॉन्फ़िगरेशन टर्मिनल पर निर्भर हो सकता है, इसलिए तथ्य यह है कि यह tmux के बाहर नहीं होता है इसका मतलब ज्यादा नहीं है। विम $TERMपर्यावरण चर को क्वेरी कर सकता है और इसके मूल्य के आधार पर विभिन्न कॉन्फ़िगरेशन चुन सकता है।

चूँकि gnome-टर्मिनल उपयोग करता है, AFAIK, चर xtermके मान के रूप में $TERM, और tmux का उपयोग करता है screen, मैं आपकी सभी vim कॉन्फ़िगरेशन फ़ाइलों के माध्यम से उन सेटिंग्स के लिए देखूंगा जो केवल उपयोग की जाने वाली $TERMचर के बराबर है screen। मेरा अनुमान है कि आपके सिस्टम पर कुछ vim config फाइल ESCटर्मिनल के होने पर एरो कीज़ (जो चरित्र से शुरू होती है) को संभालने के लिए मैपिंग सेट करती है screen

$TERMVim शुरू करने से पहले आप tmux में परिवर्तनशील रूप से परिवर्तन करके इसका परीक्षण कर सकते हैं । यदि आपका शेल बैश है, तो विम को कॉल करें

TERM=xterm vim

tmux में और देखें कि क्या समस्या बनी रहती है। आप बोना नहीं है कि एक तय के रूप में उपयोग करते हैं, हालांकि, चूंकि tmux और xterm की टर्मिनल क्षमताओं के बीच अंतर हो सकता है, और आप कुछ समस्याओं में भाग सकते हैं।


कुछ अच्छे संकेत यहाँ। मैं बैश का उपयोग करता हूं, लेकिन दुर्भाग्य TERM=xterm vimसे समस्या ठीक नहीं हुई। मुझे थोड़ी गहरी खुदाई करनी पड़ेगी।
टन वैन डेन हेउवेल

1

जैसा कि शीर्षक में स्क्रीन का उल्लेख है, यहाँ GNU स्क्रीन के भीतर एस्केप कुंजी के व्यवहार को ठीक करने का उपाय है। ( यहां से लिया गया है ।)

जोड़ना

maptimeout 5

.screenrcफ़ाइल को कॉन्फ़िगर करने के लिए ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.