BibTeX फ़ाइलों में अनुगामी अल्पविराम को याद रखने में विम कैसे मेरी मदद कर सकता है?


11

मैं काफी BibTeX फ़ाइलों को संपादित करता हूं, और मैं नियमित रूप से अनुगामी अल्पविराम भूल जाता हूं:

उदाहरण के लिए:

@Book{cooke2015british,
 author = {Cooke, Lez},
 title = {British Television Drama},
 publisher = {Palgrave on behalf of the British Film Institute},
 year = {2015},
 keywords = {about}
 address = {London},
 isbn = {978-1844576234}
 }

आप देखेंगे कि मैं इसके बाद अल्पविराम जोड़ना भूल गया keywords = {about}, जिसका अर्थ यह होगा कि मुझे समय डिबगिंग में बिताना होगा। क्या कोई तरीका है जिससे विम मुझे याद रख सके? वैसे, मेरे पास bib_autocomp.vim प्लगइन है ...


ऐसा नहीं है कि मुझे पता है, लेकिन आप इसे ठीक करने के लिए कुछ इस तरह की कोशिश कर सकते हैं :%s/[^ ,]\zs\ze\n\s*[^ }]/,/:।
सातो मत

जवाबों:


6

त्वरित और गंदा समाधान:

:match Error /^\s\+.*,\@<!\ze\n\s\+\w/

आप उसी पैटर्न का उपयोग करके BibTeX फ़ाइलों के लिए एक विशेष वाक्यविन्यास भी बना सकते हैं।

प्रयुक्त नियमित अभिव्यक्ति पर कुछ स्पष्टीकरण:

  1. ^\s\+ इंडेंट किए गए कीवर्ड की खोज।
  2. \ze पैटर्न का मिलान ऐसे रोकता है कि अगली पंक्ति चिह्नित न हो।
  3. ,\@<!\n अल्पविराम से समाप्त न होने वाली रेखाओं की खोज।
  4. \n\s\+\w गारंटी देता है कि वर्तमान में स्कैन किए जाने के बाद एक नई प्रविष्टि है।

vimgrepनिम्न पैटर्न का उपयोग गलत लाइनों के बीच कूदने के लिए किया जा सकता है :

:vimgrep /^\s\+.*,\@<!\ze\n\s\+\w/ %

यदि क्विकफ़िक्स विंडो स्वचालित रूप से नहीं खुलती है, तो इसका उपयोग करके खोला जा सकता है :copen। और :cnextऔर :cpreviousत्रुटियों के बीच कूद करने के लिए इस्तेमाल किया जा सकता है।


यह अच्छा है! जब मैं n दबाता हूं तो क्या मैं किसी तरह इसे अगली त्रुटि पर जा सकता हूं?
क्रिस्टियन नोर्डेगार्ड

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

0

एक संभावना .vimrcलापता को जोड़ने के लिए एक शॉर्टकट को परिभाषित कर रही है,

उदाहरण:

:map \q  :%s/\v([}"])(\s*\n\s*\S+\s*\=)/\1,\2/<CR>

और \qछोड़ने से पहले या जब डिबगिंग का उपयोग करें ।


मेरे लिए काम नहीं कर रहा है? मुझे मिलता है E10: \ should be followed by /, ? or & 24,1 60%, लेकिन शायद मैं इसे गलत कर रहा हूं?
क्रिस्टियन नॉर्डेस्टागार्ड

@ क्रिश्चियनऑर्गेनगार्ड, .vimrcहमें प्रारंभिक ":" को निकालना होगा। कृपया कोशिश करेंmap \q :%s/\v([}"])(\s*\n\s*\S+\s*\=)/\1,\2/e<CR><CR>
JJoao
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.