vim

2016-04-20 7 views
5

में बैकस्लैश को स्वचालित रूप से स्लैश करें क्या हम csh या vim में फ़ंक्शन/सबराउटिन लिख सकते हैं?vim

असल में, मेरा सवाल यह है कि एक स्ट्रिंग के अंदर बैकस्लाश को स्वचालित रूप से कैसे स्लैश करना है जिसे हम विम में खोज के लिए उपयोग करते हैं।

चलें कहते हैं:

फ़ाइल file_a की सामग्री है:

abcd 
a/b/c/d 

अब, अगर मैं "/ ABCD" कमांड मोड में साथ vim अंदर खोज 'एबीसीडी', यह एबीसीडी (पहली पंक्ति से मेल खाएगी)। और यदि मैं 'ए/बी/सी/डी' की खोज करता हूं, तो यह 'ए/बी/सी/डी' से मेल नहीं खाएगा। यह 'ए/बी/सी/डी' से केवल 'ए' से मेल खाएगा।

'ए/बी/सी/डी' से मेल खाने के लिए, मुझे a\/b\/c\/d खोजना होगा। बैकस्लाश स्लैशिंग हर बार एक दर्द होता है जब आप इसके अंदर बैकस्लाश वाले तारों की खोज करना चाहते हैं। :)

क्या आपने इनमें से किसी को भी हल किया है?

उत्तर

5

विम में:

आप पीछे की ओर खोज सकते हैं जहां विभाजक ? बजाय / है, इसलिए / भाग निकले जाने की जरूरत नहीं है: ?a/b/c/d; अगले मैच में नीचे जाने के लिए, N का उपयोग करें।

या आप :let @/="a/b/c/d" (यह कर्सर नहीं ले जाएगा) का उपयोग कर खोज पैटर्न सेट कर सकते हैं, फिर अगले मैच पर जाने के लिए n का उपयोग करें।

function! FindSlashed(arg) 
    let @/=a:arg 
    norm n 
endfunction 
command! -nargs=1 S call FindSlashed(<q-args>) 

आप इस तरह उपयोग कर सकते हैं जो:

:S a/b/c/d 

संपादित करें: let, नहीं set

आप अपना स्वयं का आदेश परिभाषित कर सकते हैं।

+0

उत्तर के लिए धन्यवाद a/b/c/d की जगह लेगा। मुझे पिछड़ी खोज के बारे में पता था। और यह एक चिमटा है, समाधान नहीं। मैं आपकी दूसरी विधि का प्रयास करूंगा। –

+3

बेशक यह एक चिमटा है। खोज का उपयोग करने का इच्छित तरीका स्लेश से बचने के लिए है। – Amadan

+1

दूसरा विकल्प: मैंने इसे सेट करने की कोशिश की: सेट @/= "ए/बी/सी/डी" 'लेकिन यह काम नहीं कर सका। इसके साथ त्रुटियां: 'E518: अज्ञात विकल्प: @/='। क्या मैं कुछ भूल गया? –

1

यह खोज के बारे में नहीं बल्कि बदलने के बारे में है। मैंने सोचा कि आपको यह उपयोगी लगता है क्योंकि आप फ़ंक्शन लिख रहे हैं

आप कमांड के लिए alternate delimiters का उपयोग कर सकते हैं। यानी, बल्कि / का उपयोग करने से, आप कुछ तरह #

:s#a/b/c/d#this text will replace# 

उपयोग कर सकते हैं उपरोक्त आदेश के साथ this text will replace

+0

प्रश्न बदलने की जगह नहीं था। –

+0

हाँ मैं समझता हूं।मैंने सोचा कि यह भविष्य में इस पोस्ट को पढ़ने वाले किसी और के लिए उपयोगी हो सकता है। मुझे देखने दो कि खोज में कुछ समान है या नहीं –

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

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