नियंत्रण-बाएं और नियंत्रण-राइट स्क्रीन सत्र के भीतर नहीं काम कर रहे हैं


1

विम में, कंट्रोल-लेफ्ट और कंट्रोल-राइट बैक और फॉरवर्ड व्हाट्सएप-सेस किए गए शब्द (जैसे B और W के लिए समानार्थक शब्द) हैं, जो वेब टेक्सारेस और bash

लेकिन दौड़ते समय screen, ये चाबियां काम करना बंद कर देती हैं। जब दबाया जाता है, तो vim इसके कमांड लाइन पर स्विच करता है और प्रवेश करता है 5C या 5D क्या आप वहां मौजूद हैं।

इन कुंजियों के लिए मेरे पास एन्कोडिंग है:

$ cat >/dev/null    # pressing control-left, then control-right:
^[[1;5C^[[1;5D

BTW: मैंने इन कुंजियों को फिर से बनाने की कोशिश की .screenrc, इस तरह:

bindkey ^[[1;5D stuff B
bindkey ^[[1;5C stuff W

यह विम के लिए काम करता है, लेकिन अब वे कुंजी काम नहीं करती हैं bash कमांड लाइन (बजाय, सिर्फ आउटपुटिंग B या W )।

मैं अनुमान लगा रहा हूं कि यह कुछ है termcap रहस्यमयता, जिसे मैंने कभी नहीं समझा ... किसी भी ज्ञान के लिए धन्यवाद!


$ echo $TERM स्क्रीन बदल रहा है $TERM सेवा मेरे screen-256color (अगर यह पहले से नहीं है) मदद कर सकता है। मैं तुम्हें सुझाव देता हूं कि तुम इसके आदी हो जाओ b तथा w, बजाय?
romainl

धन्यवाद। यह नहीं था, मैंने इसके साथ सेट किया term screen-256color में .screenrc, और पुनः आरंभ करना; echo $TERM परिवर्तन की पुष्टि की। लेकिन इसने समस्या का समाधान नहीं किया। मैं वास्तव में उपयोग करते हैं b / w हर समय - मैं खुद का उपयोग करके बहुत हैरान था ^left / ^right। मैं वेब को दोष देता हूं।
13ren

बुरा बुरा बुरा वेब!
romainl

@romainl :-) यह भी बैश कमांडलाइन है - क्योंकि मैं अक्सर बैश और विम के बीच स्विच कर रहा हूं, यह शायद वेब की तुलना में अधिक कारक है। खराब बैश।
13ren

जवाबों:


2

इसे ठीक करने के कुछ तरीके हैं। एक स्क्रीन शुरू करने से पहले $ TERM का मूल्य नोट करना है (शायद xterm), फिर स्क्रीन के भीतर विम शुरू करने के बाद, उस मूल्य पर 'टर्म' विकल्प सेट करें। उदाहरण के लिए,

:set term=xterm

एक अन्य तरीका उन चरित्र अनुक्रमों के लिए मैपिंग को परिभाषित करना है:

:map <esc>[1;5D <C-Left>
:map <esc>[1;5C <C-Right>

आप इस तरह से स्क्रीन का उपयोग करने पर सशर्त रूप से अपने ~ / .vimrc में उन समाधानों को निष्पादित कर सकते हैं:

if &term == "screen"
    map <esc>[1;5D <C-Left>
    map <esc>[1;5C <C-Right>
endif

1
प्रतिभाशाली! दोनों काम। मैंने पाया कि यह भी काम करता है अगर मैं इसे .rcrc में सेट करूँ ( term xterm ), लेकिन मुझे लगता है कि कम से कम विघटनकारी सबसे बुद्धिमान है, इसलिए मैंने आपके सशर्त मानचित्र उत्तर का उपयोग किया है। बीटीडब्लू को स्वैप किया जाता है, बाएं के लिए 5 डी, दाएं के लिए 5 सी (विपरीत वाला उम्मीद करेगा)। इसलिए मैंने इस्तेमाल किया: map <esc>[1;5D <C-Left> तथा map <esc>[1;5C <C-Right>
13ren
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.