2012-07-05 17 views
7

एक स्क्रीन या SSH पर tmux सत्र reattaching के बाद के बाद टूट, मैं आमतौर पर दो समस्याएं आती हैं:कुंजीपटल आईओ पुनः अनुलग्न tmux लिए/स्क्रीन

  • vim टैब पूरा होने टूटी हुई है। :e <Tab> फ़ाइलों का सुझाव देने के बजाय :e ^I उत्पन्न करता है। टैग के लिए वही (:tj)। विम को बंद करना और पुनः खोलना इसे ठीक करता है, लेकिन विम स्थिति खोने की लागत पर।
  • आर ग्राफिक्स का उत्पादन नहीं कर सकता है। मेरे पास X11 अग्रेषण (ssh -X -Y) सक्षम है। बंद करना और पुनः खोलना मदद नहीं करता है।

मैं जानबूझ कर अपनी एसएसएच विंडो बंद करके और फिर से संलग्न करके समस्या का पुन: उत्पन्न नहीं कर सकता। आमतौर पर समस्या को रीटैचिंग के बीच नेटवर्क कनेक्टिविटी के बिना लंबी अवधि के बाद देखा जाता है, और आमतौर पर अलग करना अचानक होता है (नेटवर्क कनेक्टिविटी का नुकसान)।

उत्तर

3

विम टैब पूरा होने:

इस स्क्रीन/tmux के टर्मिनल एमुलेटर के साथ एक मुद्दा है। यदि टैब आपके खोल में काम करते हैं (उदा। बैश), तो यह शेल के क्रेडिट की संभावना है; यह आपके लिए नियंत्रण अनुक्रम को मैप करना जानता था जबकि विम नहीं था। संभवतः, आप इसे उसी तरह से vim में ठीक कर सकते हैं, लेकिन फिर आप किसी अन्य इंटरैक्टिव प्रोग्राम में इस मुद्दे पर भाग लेंगे।

मैं tmux से बात नहीं कर सकता, लेकिन स्क्रीन के लिए, आपको अपने ~/.screenrc को अपडेट करना चाहिए। मेरा, डिफ़ॉल्ट से नकल है कि Redhat साथ जहाजों (जो मैं अब का उपयोग करें ...), इसमें शामिल हैं:

#xterm understands both im/ic and doesn't have a status line. 
#Note: Do not specify im and ic in the real termcap/info file as 
#some programs (e.g. vi) will not work anymore. 
termcap xterm [email protected]:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l 
terminfo xterm [email protected]:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l 

हीड कि टिप्पणी है, यह आपकी समस्या का संकेत हो सकता है।

vi के लिए एक और संदर्भ है, जो या Redhat के screenrc से आए हैं नहीं हो सकता है, यह है:

# Yet another hack: 
# Prepend/append register [/] to the paste if ^a^] is pressed. 
# This lets me have autoindent mode in vi. 
register [ "\033:se noai\015a" 
register ] "\033:se ai\015a" 
bind ^] paste [.] 

उम्मीद है कि इनमें से एक या दोनों में मदद मिलेगी, वरना मैं करने के लिए सही दिशा में इशारा किया गया है शोध करें कि आपको अपनी स्क्रीन/टीएमयूक्स टर्मिनल इम्यूलेशन को सही करने की क्या ज़रूरत है। शायद LinuxQuestions.org पर screen, vimrc, and bashrc के उत्तर आगे की सहायता कर सकते हैं।


X11 अग्रेषण:

आप पहले लांच स्क्रीन, $ प्रदर्शन विरासत में मिला होता है। उदाहरण के लिए, मैं इसका अपने टीवी सर्वर पर लाभ उठाता हूं; मैं स्थानीय रूप से स्क्रीन लॉन्च करता हूं (DISPLAY=localhost:0), फिर जब मैं एसएसएच पर उससे कनेक्ट करता हूं, तो एक्स के बारे में जो कुछ भी करता है वह टीवी पर पॉप अप करता है। जाहिर है, यह आपके उपयोग के मामले में नहीं है; मैं आपको यह शिक्षित करने की कोशिश कर रहा हूं कि यह कैसे काम करता है ताकि आप समाधान को समझ सकें।

यदि आप पुराने एसएसएच कनेक्शन द्वारा लॉन्च किए गए स्क्रीन/टीएमयूक्स सत्र से फिर से कनेक्ट हो रहे हैं, तो आप भाग्यशाली हो सकते हैं और इसे एक ही एक्स डिस्प्ले से कनेक्ट कर सकते हैं (एसएसएच डिफ़ॉल्ट लोकहोस्ट पर डिफ़ॉल्ट: 10.0 और उसके बाद हर बार टकराव पाता है), लेकिन ऐसा लगता है कि यह आपके लिए नहीं हो रहा है। ("स्थानीय होस्ट" भाग के रूप में ".0" हिस्सा है, वैकल्पिक है। उन अपने उद्देश्यों के लिए कोई फर्क नहीं करना चाहिए। DISPLAY=:10 है एक ही रूप में DISPLAY=localhost:10.0)

इससे पहले कि आप अपनी स्क्रीन/tmux सत्र से कनेक्ट, अपने $ DISPLAY पर एक नज़र डालें।

$ echo $DISPLAY 
localhost:10.0 

फिर, स्क्रीन/tmux में लॉग इन करें और जो आपने पहले देखा था उस पर $ DISPLAY सेट करें।

$ screen -r 
$ export DISPLAY=localhost:10.0 

मुझे नहीं लगता कि या तो स्क्रीन या tmux (अपने टीवी सर्वर उदाहरण के बारे में सोच बहुत चालाक किसी भी इस से आगे जाने के हैं, यह हमेशा वांछित नहीं है, और स्क्रीन/tmux पूछ $ प्रदर्शन का परीक्षण करने के और फिर इसकी उपलब्धता पर आकस्मिक कार्य थोड़ा सा है), इसलिए आपको इसे मैन्युअल रूप से करना होगा।

(यदि आप मेरे जैसे हैं और 0 ~अपने ~/.bashrc में जोड़ते हैं तो यह परेशान हो सकता है। मैं इस समस्या में नहीं चलता क्योंकि मैं X11 अग्रेषण से बचने की कोशिश करता हूं क्योंकि यह गुड़ के रूप में धीमा होने के कारण होता है और निश्चित रूप से एसएसएच डिस्कनेक्शन नहीं बच रहे हैं।)

0

दूसरी समस्या DISPLAY चर एक जैसा दिखता है। echo $DISPLAY आज़माएं जब आप सत्र को दोबारा जोड़ते समय पहली बार लॉगिन करते हैं। यदि वे भिन्न हैं (जो मुझे संदेह है), setenv या export यह सही मान पर है।

पहली समस्या के रूप में अपने tmux.conf पर एक नज़र डालने की कोशिश (या अपने से डिफ़ॉल्ट स्थापित) कारण वे <TAB> विकास संस्करणों में हास्यास्पद कार्रवाई करने के लिए remapping गया (स्पष्ट इतिहास की तरह) तो शायद के बाद reattach, tmux घटना का मालिक है और vim नहीं।