लाइन ब्रेक सम्मिलित किए बिना vim स्वतः पूर्ण सूची में किसी आइटम का चयन करें


22

Vim की एक कष्टप्रद विशेषता यह है कि यदि आप इन्सर्ट मोड में हैं और एक स्वत: पूर्ण (Ctrl-N) करते हैं, तो इच्छित आइटम के नीचे की ओर तीर करें, और Enter कुंजी दबाएं, फिर यह आइटम को सम्मिलित करता है, लेकिन एक नई पंक्ति सम्मिलित करता है: फिर हटाना है।

क्या एक अतिरिक्त अवांछित न्यूलाइन प्राप्त किए बिना किसी आइटम को स्वतः पूर्ण सूची से चुनने का कोई तरीका है?


1
यह ऐसा नहीं है कि यह मेरे लिए कैसे काम करता है ... मैं कुछ का चयन करता हूं, Enter दबाएं, और कर्सर अभी भी उसी पंक्ति पर है।
गोल्डीलॉक्स

जवाबों:


37

यह निर्भर करता है कि आप किस पॉपअप मेनू स्थिति में हैं (देखें :help popupmenu-completion)। मैं आपके प्रश्न से समझता हूं कि आप राज्य 2 में हैं (क्योंकि आपने तीर कुंजी को पूरा करने के लिए दबाया है)। हालाँकि, Enterराज्य 2 के लिए डिफ़ॉल्ट व्यवहार पूर्णता को बिना नई रेखा के सम्मिलित करना है; आप जो वर्णन करते हैं वह सामान्य रूप से राज्य 1 का व्यवहार है (जब आप Ctrl+ N/ Ctrl+ का उपयोग करते हैं P)

एक तरीका जो सभी राज्यों में लगातार काम करता है वह है Ctrl+ का उपयोग करना Y। मैं वाई को याद रखना पसंद करता हूं क्योंकि "हाँ, उस शब्द को स्वीकार करें।" यह भी संभव है कि आप केवल उस पाठ को लिखना शुरू करें जो पूर्ण शब्द के बाद आना चाहिए, जब तक कि आपने गिडग्वेलिया के उत्तर के रूप में चीजों को हटा दिया हो।

उसी संदर्भ में, आप मेनू को रद्द करने के लिए Ctrl+ दबा सकते हैं Eऔर अपना पाठ छोड़ सकते हैं जैसा कि आप इसे लागू करने से पहले थे। आप की जोड़ी को पसंद करते हैं तो Ctrl+ Eऔर Ctrl+ Yअन्य संदर्भों में (उदाहरण के लिए ऊपर स्क्रॉल करने के लिए या सामान्य मोड में नीचे, या नीचे या डालने मोड में कर्सर के ऊपर चरित्र डालने के लिए), एक तरह से इसे यहाँ याद करने के लिए बहुत कुछ है। मुझे लगता है कि आप इसे मीनू या उससे बाहर निकलने के बारे में भी सोच सकते हैं।

:help popupmenu-keysअधिक के लिए देखें ।


2
आह हा, यह समझ में आता है। मैं ड्रॉप-डाउन खोलने के लिए Ctrl-N का उपयोग कर रहा हूं। मैं ड्रॉप डाउन नेविगेट करने के लिए तीर कुंजियों का उपयोग कर रहा हूं। मुझे नहीं पता था कि आप ड्रॉप डाउन खोलने के लिए एरो कीज़ का इस्तेमाल कर सकते हैं।
टायलर ड्यूरन

तीर कुंजियाँ डिफ़ॉल्ट कॉन्फ़िगरेशन में, ड्रॉपडाउन को नहीं खोल सकती हैं। एक बार खुलने के बाद मैंने जो भेद बताया, वह मेनू को नेविगेट करने के बारे में था।
22

किसी कारण से जब मैंने <kbd> Ctrl </ kbd> + <kbd> Y </ kbd> के साथ ऐसा करने का प्रयास किया, तो यह उस रेखा को भी इंगित करता है, जो अवांछित है। किसी भी विचार के साथ कि ऐसा क्यों होगा?
मपीजर

मैंने कभी उसका सामना नहीं किया। शायद यह कुछ इंडेंट सेटिंग या एक प्लगइन के कारण है जिसके बारे में आप भूल गए हैं। मैं विम की मेलिंग सूची पर पूछूँगा : vim.org/maillist.php
अक्टूबर को इक्रिस्टोफ़र्सन

6

व्यक्तिगत रूप से मैं इसका उपयोग करता हूं:

inoremap <expr> <TAB> pumvisible() ? "\<C-y>" : "\<CR>"
inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>"
inoremap <expr> <C-j> pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <C-k> pumvisible() ? "\<C-p>" : "\<Up>"

जो भी CtrlP प्लगइन का उपयोग करता है वह इस मैपिंग को सुविधाजनक पा सकता है।


3

मुझे पता है कि यह पुराना है, लेकिन गिडग्वेदिया के जवाब पर इस तरह की गुल्लक का इस्तेमाल किया जा रहा है, हालांकि इक्रिस्टोफ़र्सन का जवाब जानकारीपूर्ण और भयानक था, अगर कोई भी त्वरित और गंदा समाधान चाहता है:

inoremap <expr> <cr> ((pumvisible())?("\<C-y>"):("\<cr>"))

2

अपने तीर कुंजी का उपयोग करने के विकल्प के रूप में, अपने jऔर kकुंजियों को स्वतः पूर्ण सूची में स्क्रॉल करने के लिए सक्षम करें ।

ऐसा करने से आपके द्वारा स्क्रॉल किए गए चयनित शब्द से मेल खाने के लिए वर्तमान लाइन बदल जाती है।

इसलिए आपको एन्टर प्रेस करने की आवश्यकता नहीं है क्योंकि कर्सर अभी भी सब्स्टीट्यूट शब्द के अंत में इन्सर्ट मोड में है।

इसे अपने .vimrc में जोड़ने के लिए इसे सक्षम करने के लिए (स्टैकओवरफ़्लो में दूसरों के लिए धन्यवाद):

inoremap <expr> j ((pumvisible())?("\<C-n>"):("j"))
inoremap <expr> k ((pumvisible())?("\<C-p>"):("k"))

अलग-अलग, तीर कुंजियों का उपयोग करने के बजाय, आप बस दोहरा सकते हैं Ctrl-nजो कि विकल्पों के माध्यम से शाप देगा ( Ctrl-pपीछे की ओर जाने के लिए) और वर्तमान रेखा पर स्थानापन्न करता है क्योंकि यह चलता है, Enterकुंजी की मैपिंग की आवश्यकता नहीं है ।


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

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