रेमीक्स को कैसे पुनः उपयोग करें और विम में बदलें


2

मेरे पास प्रविष्टियों के साथ एक सादा पाठ फ़ाइल है

firstAuthorLastName_titleFirstWord_YYYY

कि मैं बदल जाता हूँ

firstAuthorLastNameYYYYtitleFirstWord

s//विम में निम्नलिखित कमांड के साथ । ^ [1]

%s/\([a-z]\+\)_\([a-z]\+\)_\([0-9]\{4}\)/\1\3\2/g

लेकिन मैं इस कमांड को बार-बार करना चाहता हूं। ऐसा लगता है कि मुझे विंडोज बैच स्क्रिप्ट और -cफ्लैग टू के साथ ऐसा करने में सक्षम होना चाहिए gvim.exe। लेकिन मैं इसे काम नहीं कर सकता।

मेरे पास निम्न के साथ एक Windows बैच स्क्रिप्ट है।

gvim -c "%s/\([a-z]\+\)_\([a-z]\+\)_\([0-9]\{4}\)/\1\3\2/g" herron.bib

लेकिन मुझे संदेश मिलता है E486: Pattern not found: \([a-z]\+\)_\([a-z]\+\)_\([0-9]\{4}\)। क्या इस s//कमांड को पुनः उपयोग / स्वचालित करने का कोई तरीका है ? मुझे पता है कि मैं अपने पूर्व कमांड इतिहास के माध्यम से तीर चला सकता हूं, लेकिन मैं कुछ अधिक स्थायी और विश्वसनीय चाहूंगा।

[^ 1] FWIW, यह एक BibTeX .bib फ़ाइल है जिसे मैं Zotero से निर्यात करता हूं । इसके अलावा नीचे मैं मार्क में नोट्स लिखने के लिए vim-pandoc का उपयोग करता हूं । अंडरस्कोर यह vim-pandoc "tidy" फ़ंक्शन का उपयोग करने के लिए थोड़ा अधिक कठिन बनाता है, इसलिए मैं उन्हें हटा देता हूं। मैं एक सप्ताह में कई बार .bib को अपडेट करता हूं और इसे Zotero से फिर से निर्यात करता हूं, इसलिए मुझे इस regex को सप्ताह में कई बार चलाने की भी आवश्यकता है।

जवाबों:


5

मुझे कुछ भी गलत नहीं दिख रहा है, और जाहिर है कि पैटर्न सही ढंग से विम के पास है, इसलिए इसे काम करना चाहिए :-(

वैकल्पिक

जब तक आप वास्तव में विशेष विम क्षमताओं की जरूरत है, तो आप शायद का उपयोग कर बेहतर कर रहे हैं गैर-सहभागी उपकरण की तरह sed, awkया पर्ल / पायथन / रूबी / अपने पसंदीदा पटकथा भाषा यहाँ

कहा कि, आप अंतरिम रूप से विम का उपयोग कर सकते हैं:

साइलेंट बैच मोड

बहुत ही सरल पाठ प्रसंस्करण के लिए (अर्थात एक बढ़ाया 'sed' या 'awk' की तरह Vim का उपयोग करना, शायद सिर्फ एक :substituteकमांड में बढ़ाया नियमित भावों से लाभ उठाना ), Ex-mode का उपयोग करें

REM Windows
call vim -N -u NONE -n -es -S "commands.ex" "filespec"

नोट: साइलेंट बैच मोड ( :help -s-ex) विंडोज कंसोल को गड़बड़ करता है, इसलिए आपको clsविम रन के बाद सफाई करनी पड़ सकती है ।

विम विकल्प

आपके विवरण के आधार पर, यह पूरी तरह से स्पष्ट नहीं है कि आप पूर्ण स्वचालन चाहते हैं, या बस आसान याद करते हैं। यदि आपको विम के भीतर से मैन्युअल रूप से (लेकिन जल्दी से) कमांड लागू करने में कोई आपत्ति नहीं है, तो कैसे:

क) एक कस्टम कमांड

:command! TidyNames %s/\([a-z]\+\)_\([a-z]\+\)_\([0-9]\{4}\)/\1\3\2/g

बी) एक कस्टम मानचित्रण

:nnoremap <Leader>tn :%s/\([a-z]\+\)_\([a-z]\+\)_\([0-9]\{4}\)/\1\3\2/g<CR>

इन दोनों को आपके द्वारा ~/.vimrc, या ( <buffer>संशोधक के साथ ) एक filetype- विशिष्ट में रखा जा सकता है ~/.vim/after/ftplugin/tex.vim


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