क्या Vim में .odt, .doc, .docx, .rtf और अन्य गैर-सादा-पाठ स्वरूपों के साथ आसानी से काम करना संभव है?


14

कभी-कभी किसी ने मुझे एक भेजता है .odt, .docऔर .docxफ़ाइल; ओपनऑफ़िस में उन्हें खोलना हमेशा एक दर्द होता है क्योंकि, ओपनऑफ़िस।

अभी मैं odt2txtइन फ़ाइलों को सादे पाठ में बदलने के लिए कई प्रकार के कमांडलाइन टूल (जैसे ) का उपयोग करता हूं , सादे पाठ को एक अस्थायी फ़ाइल में सहेजता हूं , और फिर इसे विम में देखें (और शायद संपादित करें)।

क्या इसे आसान बनाया जा सकता है? शायद ऑटोग्रुप्स के साथ कुछ? या शायद बेहतर तरीके हैं? मैं बस करना चाहूंगा:

$ vim file.odt

और विम ने मेरे लिए धर्मान्तरण का ख्याल रखा है?

इससे भी बेहतर (बोनस अंक) होगा यदि मैं फ़ाइल को बचाने में सक्षम था (भी file.txt), लेकिन यह तब तक नहीं होगा जब तक मैं एक लेखन नहीं करता ...

जवाबों:


13

आपको अपने vimrc में ऐसा कुछ जोड़ने में सक्षम होना चाहिए:

autocmd BufReadPost *.odt :%!odt2txt %

odt2txtVim द्वारा पढ़ने के बाद यह पूरे बफर को प्रोग्राम के माध्यम से भेजेगा , लेकिन केवल तभी जब फ़ाइल का नाम समाप्त होता है .odt

वहाँ textutil.vim प्लगइन भी है जो कहता है कि यह वही कर सकता है जो आप उन कुछ फ़ाइल प्रकारों के बारे में बात कर रहे हैं (लेकिन मैंने व्यक्तिगत रूप से इसका उपयोग नहीं किया है)।

यदि आप सादे पाठ की तुलना में कुछ अधिक संरचित में संपादित करने के लिए तैयार हैं, जैसे मार्काडाउन , तो आप रूपांतरण करने के लिए पैंडॉक का उपयोग भी कर सकते हैं :

autocmd BufReadPost *.docx :%!pandoc -f docx -t markdown
autocmd BufWritePost *.docx :!pandoc -f markdown -t docx % > tmp.docx

मैंने वास्तव में इन रूपांतरणों का परीक्षण नहीं किया है, लेकिन उन्हें काम करना चाहिए। आपको फ़ाइल प्रारूप के आधार पर विभिन्न उपकरणों का उपयोग करने की आवश्यकता हो सकती है।


autocmd BufReadPost *.docx :%!pandoc -f docx -t markdownमूल रूप से इसका मतलब यह है, कि अगर मैं vd में एक .docx फ़ाइल खोलता हूं, तो :%!pandoc -f docx -t markdownवह VIM विंडो पर प्रदर्शित करने से पहले, उस फ़ाइल को इसके माध्यम से पारित करेगा ?
अल्फा_989

1
@ अल्फ़ा_989 हाँ।
xthrd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.