Apakah mungkin untuk bekerja dengan mudah .odt, .doc, .docx, .rtf, dan format non-teks biasa lainnya di Vim?

14

Kadang-kadang seseorang mengirim saya .odt, .docdan .docxberkas; membukanya di OpenOffice selalu menyusahkan karena, well, OpenOffice.

Saat ini saya menggunakan berbagai alat commandline (seperti odt2txt) untuk mengkonversi file-file ini menjadi teks biasa, menyimpan teks biasa menjadi file sementara, dan kemudian melihat (dan mungkin mengedit) dalam Vim.

Bisakah ini menjadi lebih mudah? Mungkin sesuatu dengan autogroup? Atau mungkin ada cara yang lebih baik? Saya hanya ingin melakukan:

$ vim file.odt

Dan sudahkah Vim mengurus konversi untuk saya?

Bahkan lebih baik (poin bonus) adalah jika saya juga dapat menyimpan file (ke file.txt), tetapi ini tidak akan dibuat sampai saya menulis ...

Martin Tournoij
sumber

Jawaban:

13

Anda harus dapat menambahkan sesuatu seperti ini ke vimrc Anda:

autocmd BufReadPost *.odt :%!odt2txt %

Itu akan mengirim seluruh buffer melalui odt2txtprogram setelah itu dibaca oleh vim, tetapi hanya jika nama file berakhir dengan .odt.

Ada juga plugin textutil.vim yang mengatakan dapat melakukan apa yang Anda bicarakan untuk beberapa tipe file tersebut (tapi saya belum menggunakannya secara pribadi).

Jika Anda ingin mengedit sesuatu yang sedikit lebih terstruktur daripada teks biasa, seperti penurunan harga, Anda juga dapat menggunakan pandoc untuk melakukan konversi:

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

Saya belum benar-benar menguji konversi ini, tetapi mereka harus bekerja. Anda mungkin perlu menggunakan alat yang berbeda tergantung pada format file.

xthrd
sumber
Apakah autocmd BufReadPost *.docx :%!pandoc -f docx -t markdownpada dasarnya berarti, bahwa jika saya membuka file .docx di vim, ia akan melewati file itu :%!pandoc -f docx -t markdown, sebelum menampilkannya di jendela VIM?
alpha_989
1
@ alpha_989 ya.
xthrd