È possibile lavorare facilmente con .odt, .doc, .docx, .rtf e altri formati non di testo normale in Vim?


14

Di tanto in tanto qualcuno mi manda una .odt, .doce .docxdi file; aprirli in OpenOffice è sempre una seccatura perché, beh, OpenOffice.

In questo momento uso una varietà di strumenti a riga di comando (come odt2txt) per convertire questi file in testo normale, salvare il testo normale in un file temporaneo e quindi visualizzarlo (e forse modificarlo) in Vim.

Questo può essere reso più semplice? Forse qualcosa con gli autogruppi? O forse ci sono modi migliori? Vorrei solo fare:

$ vim file.odt

E Vim si è occupato della conversione per me?

Ancora meglio (punti bonus) sarebbe se fossi anche in grado di salvare il file (in file.txt), ma che questo non sarebbe stato creato finché non avessi scritto ...

Risposte:


13

Dovresti essere in grado di aggiungere qualcosa di simile al tuo vimrc:

autocmd BufReadPost *.odt :%!odt2txt %

Questo invierà l'intero buffer attraverso il odt2txtprogramma dopo che è stato letto da vim, ma solo se il nome del file termina .odt.

C'è anche il plugin textutil.vim che dice che può fare quello di cui stai parlando per alcuni di quei tipi di file (ma non l'ho usato personalmente).

Se sei disposto a modificare qualcosa di leggermente più strutturato del semplice testo, come il markdown, puoi anche usare pandoc per fare la conversione:

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

Non ho ancora testato queste conversioni, ma dovrebbero funzionare. Potrebbe essere necessario utilizzare strumenti diversi a seconda del formato del file.


significa autocmd BufReadPost *.docx :%!pandoc -f docx -t markdownfondamentalmente che se apro un file .docx in vim, invece passerà attraverso quel file :%!pandoc -f docx -t markdown, prima di visualizzarlo nella finestra VIM?
alpha_989,

1
@ alpha_989 sì.
X
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.