मैं Ctrl-N प्रदर्शन करने के लिए एक विम मैपिंग कैसे बना सकता हूं, लेकिन जैसे कि आइकवर्ड में '-' शामिल है?


1

विम में, जब मैं प्रोग्रामिंग कर रहा हूं, मैं अक्सर चाहता हूं कि Ctrl-N ऐसा व्यवहार करे जैसे कि -एक कीवर्ड का हिस्सा था; दूसरे शब्दों में, क्या इसमें शामिल है iskeyword। हालाँकि, मैं इसके लिए एक नया कीमैपिंग बनाना चाहता हूँ और इसे चालू व्यवहार रखने के लिए Ctrl-N रखें।

मैंने यह कोशिश की है:

inoremap <C-B> <C-O>:set iskeyword+=-<CR><C-N>

... किस तरह का काम करता है, लेकिन आइसकॉर्ड विकल्प में अतिरिक्त -बाद शामिल है, जो वांछित व्यवहार नहीं है।

यह भी काम करता है:

inoremap <C-B> <C-O>:set iskeyword+=-<CR><C-N><C-O>:set iskeyword-=-<CR>

... लेकिन पॉप-अप मेनू द्वारा मारा जाता है <C-O>

क्या कोई ऐसा तरीका है जिससे मैं अपना केक बना सकता हूं और खा सकता हूं? पॉप-अप मेनू दिखाई देने और जगह में बने रहने के लिए है, लेकिन iskeywordबाद में वापस सेट करें कि यह क्या था?

वैकल्पिक रूप से, क्या इस समस्या को हल करने का एक और तरीका है?

जवाबों:


2

यह काम करने लगता है।

function! CustomComplete(type)
    set iskeyword+=-
    return a:type
endfunction
inoremap <expr> <C-B> CustomComplete("<C-N>")
autocmd CompleteDone * set iskeyword-=-

हम फ़ंक्शन को चलाने के लिए एक अभिव्यक्ति मैपिंग का उपयोग करते हैं, जो iskeywordहर बार अपने रन को सेट करता है (एक समस्या नहीं लगती है। मुझे इन्स-पूर्ण होने से पहले के लिए एक ऑटोकैम भी नहीं मिला।) फ़ंक्शन का वापसी मान तब उपयोग किया जाता है। मैपिंग के लिए प्रतिस्थापन। इस मामले में आप <C-N>व्यवहार चाहते थे । फिर -सेट आइसकॉर्ड से सेट को हटाने के लिए हम ऑटोकॉमैंड का उपयोग करते हैं CompleteDoneजो इन्स-पूर्ण होने के बाद होता है।


इसके अलावा, मैंने आपके दोनों मैपिंग की कोशिश की थी जो पहले की अपेक्षा के अनुरूप काम नहीं करता है क्योंकि इसमें वह भी है <C-O>जो पूरी होने वाली खिड़की को मारता है।


पूर्ण धन्यवाद! - यह काम करने लगता है। यहाँ अंतर्दृष्टि आवरण समारोह का उपयोग कर रही थी C-N(जो मुझे नहीं पता था कि आप ऐसा कर सकते हैं), और CompleteDoneघटना। धन्यवाद - अपने आप को यह पता नहीं लगा होगा!
एंड्रयू फेरियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.