2010-04-21 13 views
22

में विफल रहता है मैं ctrl-tab को: tabn, और ctrl-shift-tab को: tabp पर मैप करना चाहता हूं।मैपिंग <C-Tab> मेरे vimrc में उबंटू

मैंने इसे विंडोज एक्सपी में जीवीआईएम के लिए काम किया था, लेकिन इसे उबंटू 9 .10 में मेरे .vimrc में ले जाया गया और यह काम नहीं करता है (vim 7.2)।

nmap <C-Tab> :tabn<CR> 
nmap <C-S-Tab> :tabp<CR> 
nmap <C-t> :tabnew<CR> 

<C-t> ठीक काम करता है, तो Ctrl कुंजी मानचित्रण एक समस्या हो प्रतीत नहीं होता:

यहाँ मेरी .vimrc के प्रासंगिक अनुभाग है। मुझे वास्तव में पता नहीं है कि कहां से शुरू करना है! विंडोज़ के तहत ठीक काम करने पर विचार करने से क्या गलत हो सकता है?

और जानकारी: मैं चल रहा हूँ उबंटू 9.10 सर्वर, xorg और fluxbox शीर्ष पर स्थापित के साथ। मैं अपने टर्मिनल के रूप में xterm का उपयोग कर रहा हूं।

Ctrl-टैब मानचित्रण fluxbox में काम करता है: मैं कर सकते हैं नक्शा ctrl-टैब और मेरे विंडो प्रबंधक में Ctrl-Shift-टैब सफलतापूर्वक; अगर मैं अपने xterms को टैब्ब करना शुरू करता हूं, तो मैं उम्मीद के अनुसार उन टैब के माध्यम से चक्र कर सकता हूं। मुझे यकीन नहीं है कि इसका क्या अर्थ है, लेकिन मुझे लगता है कि यह मुद्दा विंडो प्रबंधक/xorg समस्या नहीं है।

चाबियाँ किसी अन्य चीज़ के लिए मैप नहीं लगती हैं, और सफलतापूर्वक एक साथ पहचानी जा सकती हैं।

उत्तर: यह एक xterm मुद्दा है - इसे रोकने नहीं करता है और ctrl-tab के लिए एक अनूठा कीकोड भेजें। विवरण के लिए नीचे मेरा पूरा जवाब देखें।

+1

क्या सी-टैब संभवतः आपके टर्मिनल के लिए विशेष अर्थ है? – Cascabel

+0

संभवतः ... मैं इसे देख लूंगा। मैं xterm चल रहा हूँ। – nfm

उत्तर

30

यह निश्चित रूप से एक टर्मिनल मुद्दा है।

स्पष्ट रूप से xterm, और कई अन्य टर्मिनल अनुकरणकर्ता, डिफ़ॉल्ट रूप से ctrl-tab को अवरुद्ध नहीं करते हैं और केवल एक टैब सिग्नल भेजते हैं। यह Vim wiki page बताता है कि ctrl-tab xterm, Eterm, और aterm के लिए काम नहीं करता है। यह Arch linux form post भी दावा कर रहा है कि यह एक टर्मिनल मुद्दा है।

समाधानthis blog post से vim wiki for mapping keycodes के साथ जानकारी को जोड़कर पाया जा सकता है। इसका यह अर्थ यह है कि आपको xterm को कॉन्फ़िगर करने और ctrl-tab और ctrl-shift-tab के लिए अपने .Xresources फ़ाइल में एक अनन्य कोड भेजने के लिए कॉन्फ़िगर करने की आवश्यकता है, फिर अपने .vimrc में कुछ फंकी मैपिंग के साथ हैक करें।

लंबी कहानी छोटी है कि यह करना मुश्किल है (अभी भी इसे यहां काम नहीं मिला है) क्योंकि xterm और vim दोनों को इसे करने में धोखा देने की आवश्यकता है। मैं व्यक्तिगत रूप से आगे बढ़ने और एक और मानचित्रण का उपयोग करने जा रहा हूं ... यह मुद्दा एक गंभीर समय चूसने वाला है और मुझे नहीं लगता कि यह काम करने के लिए दबाव डालने लायक है!

मदद लोगों के लिए धन्यवाद।

+0

के रूप में xorg इंस्टॉल और फ्लक्सबॉक्स के साथ उबंटू सर्वर चला रहा हूं यदि आप एक अंतरिम के रूप में चाहते हैं तो http://superuser.com/questions/410982/in-vim-how-can- i- जल्दी-स्विच-बीच-टैब। यह gt या gT के मुख्य संयोजन का उपयोग करता है जो एक टर्मिनल –

+1

के माध्यम से काम करता प्रतीत होता है कि वैकल्पिक टर्मिनल इस समस्या को हल कर सकता है? – wukong

+0

@ वोकोंग जो मैं सोच रहा हूं, मैं देखता हूं कि tmux को 'स्क्रीन -256 रंग' के साथ कॉन्फ़िगर किया जाना चाहिए, तो क्या हम इसे किसी अन्य टर्मिनल के साथ काम कर सकते हैं? – statquant

0

यदि आप उबंटू का उपयोग कर रहे हैं, तो आपके पास शायद कंपिज़ सक्षम की तरह कुछ है।

मैं निश्चित रूप से नहीं जान सकता, लेकिन आपको कंपिज़ एक्सटेंशन पर एक नज़र रखना चाहिए और उनमें से उस शॉर्टकट को परिभाषित करता है या नहीं। मुझे एक बार एक ही समस्या थी, विम के साथ नहीं, लेकिन फिर भी।

यह एक्स सर्वर भी हो सकता है जो कुछ कीस्ट्रोक को रोकता है (उदाहरण: xbindkeys)।

+0

अधिक जानकारी: मैं अपने विंडो प्रबंधक – nfm

2

मैं @ NFM के जवाब से ब्लॉग और विकी पदों का इस्तेमाल किया और इसे हल:

अपने .Xresources फ़ाइल में इस रखो (आप इस मामले में कॉपी-पेस्ट कर सकते हैं):

xterm*VT100.Translations: #override \ 
      Ctrl ~Shift <Key>Tab: string(0x1b) string("[27;5;9~") \n\ 
      Ctrl Shift <Key>Tab: string(0x1b) string("[27;6;9~") 

फिर cd ; xrdb .Xresources करना और xterm पुनरारंभ करें।


अपने .vimrc में इस रखो:

!! महत्वपूर्ण - XXXX के बजाय आप CTRL-V टाइप करना होगा और उसके बाद Escया पूरे पाठ कॉपी-पेस्ट और %s/\(set <F1[34]>=\)XXXX/\=submatch(1) . "\33"/g जो कॉपी-pastable (<CTRL-R> + साथ सम्मिलित) है चलाते हैं।

set timeout timeoutlen=1000 ttimeoutlen=100 
set <F13>=XXXX[27;5;9~ 
nnoremap <F13> gt 
set <F14>=XXXX[27;6;9~ 
nnoremap <F14> gT 

और विम को पुनरारंभ करें।

हो गया।

+0

यह काम नहीं कर रहा है – statquant

+0

@statquant यह मेरे लिए पूरी तरह से काम करता है। क्या आप लिख सकते हैं कि वास्तव में आपके लिए कौन सा हिस्सा काम नहीं कर रहा है? – MichalH

+0

मैं इसके साथ टैब स्विच नहीं कर सकता, मैंने उन टैबलेट के साथ '.Xresources' फ़ाइल की प्रतिलिपि बनाई, फिर' cd; xrdb .Xresources' ने 'XXXX' से'^['में परिवर्तन का उपयोग करके '.vimrc' को अपडेट किया है, आपकी लाइन के साथ सभी टर्मिनलों और vim को पुनरारंभ किया गया है ... यह – statquant