2013-08-30 20 views
7

खोज के लिए इस्तेमाल किया गया था मैं लगभग हमेशा / के साथ विम में खोज करता हूं, और फिर n और N के साथ आगे की ओर खोजना जारी रखता हूं। कभी-कभी, मैं ? का उपयोग किसी आइटम पर कूदने के लिए केवल उस पंक्ति से ऊपर की कुछ पंक्तियों पर कूदने के लिए करता हूं, और उस स्थिति में, यदि मैं उसी आइटम को आगे खोजना चाहता हूं, तो मुझे n के बजाय N का उपयोग करना होगा, परेशान मानसिक गति टक्कर।'n' हमेशा खोज करें, भले ही/या?

तो मेरा सवाल है: क्या n हमेशा आगे बढ़ना संभव है, और N पीछे की ओर?

पीएस प्रलेखन संकेत देता है कि यह संभव नहीं है, क्योंकि n बस "नवीनतम"/"या"? "[गिनती] बार दोहराता है", लेकिन कौन जानता है।

उत्तर

9

यह विम मेलिंग सूची पर ZyX's post से लिया गया था।

noremap <expr> n 'Nn'[v:searchforward] 
noremap <expr> N 'nN'[v:searchforward] 

यह मूल एन या n दो तत्वों की सूची के रूप में अनुक्रमण 'Nn' द्वारा चर v:searchforward के आधार पर करने के लिए n मैप करता है। यह केवल काम करता है क्योंकि मानचित्रण गैर-पुनरावर्ती है। यदि यह रिकर्सिव था तो यह स्वयं को कॉल करेगा और आप अनंत लूप में होंगे।

जब v:searchforward == 1 (आगे खोज) मैपिंग

noremap <expr> n n 
noremap <expr> N N 

और के बराबर हैं जब v:searchfoward == 0 (पीछे की ओर खोज) मैपिंग

noremap <expr> n N 
noremap <expr> N n 

यह मानचित्रण सामान्य, दृश्य में काम करता है, और के बराबर हैं ऑपरेटर लंबित मोड।


शायद मैं इसे इस तरह लिखा होगा। (हालांकि मुझे यकीन नहीं है कि यह कोई स्पष्ट है)

noremap <expr> n (v:searchforward ? 'n' : 'N') 
noremap <expr> N (v:searchforward ? 'N' : 'n') 
+0

वाह, यह एक सरल मैपिंग है। – dorserg

+0

वैसे, जैसा कि यह धागा पॉप आउट हो गया था, मेरे पास "नया है," के लिए मेरा नया समाधान है, लेकिन पहली बार मैं /पैटर्न डी // ई (हिट के रूप में एंटर दबाएं) के साथ दोहराने योग्य एनएनएनएन "शिकायत। – ZyX

6

अभी जिस तरह यह है कि, डेवलपर्स मेलिंग सूची पर कुछ बहस के होते हुए भी ...

यहाँ आप इसके बारे में क्या कर सकते हैं: बहुत से

:noremap n /<CR> 
:noremap N ?<CR> 

प्रासंगिक मेलिंग सूची धागा अधिक दिलचस्प जानकारी: https://groups.google.com/d/msg/vim_dev/8jSoA931P2Y/JklYtxFOiAYJ

+0

मुझे '/ e' ध्वज खोना प्रतीत नहीं होता है। – FDinoff

+0

आह, आप सही हैं, मैंने इसे 'एस' के साथ भ्रमित कर दिया और पर्याप्त परीक्षण नहीं किया। मुझे आश्चर्य है कि क्या कोई और समस्या है, समाधान लगभग बहुत आसान लगता है ... – glts

+0

मुझे धागे के नीचे ज़ीक्स का जवाब पसंद है। (और जहां मैं जा रहा था अगर मैं उस चर को पा सकता हूं यदि आपने पहले पोस्ट नहीं किया था) 'noremap n' एनएन '[v: searchforward] 'और ' noremap एन' एनएन '[v: searchforward] ' – FDinoff

संबंधित मुद्दे