¿Es posible trabajar fácilmente con .odt, .doc, .docx, .rtf y otros formatos de texto no plano en Vim?


14

De vez en cuando alguien me envía una .odt, .docy .docxarchivo; abrirlos en OpenOffice siempre es una molestia porque, bueno, OpenOffice.

En este momento, uso una variedad de herramientas de línea de comandos (como odt2txt) para convertir estos archivos a texto sin formato, guardar el texto en un archivo temporal y luego verlo (y quizás editarlo) en Vim.

¿Se puede hacer esto más fácil? Quizás algo con grupos automáticos? ¿O tal vez hay mejores formas? Me gustaría simplemente hacer:

$ vim file.odt

¿Y Vim se encargó de la conversión por mí?

Aún mejor (puntos de bonificación) sería si también pudiera guardar el archivo (en file.txt), pero eso no se crearía hasta que escriba ...

Respuestas:


13

Debería poder agregar algo como esto a su vimrc:

autocmd BufReadPost *.odt :%!odt2txt %

Eso enviará todo el búfer a través del odt2txtprograma después de que sea leído por vim, pero solo si el nombre del archivo termina con .odt.

También está el complemento textutil.vim que dice que puede hacer lo que estás hablando para algunos de esos tipos de archivos (pero no lo he usado personalmente).

Si está dispuesto a editar en algo un poco más estructurado que el texto sin formato, como Markdown, también puede usar pandoc para realizar la conversión:

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

En realidad no he probado estas conversiones, pero deberían funcionar. Es posible que deba usar diferentes herramientas según el formato del archivo.


¿ autocmd BufReadPost *.docx :%!pandoc -f docx -t markdownbásicamente significa que si abro un archivo .docx en vim, pasará ese archivo :%!pandoc -f docx -t markdownantes de mostrarlo en la ventana VIM?
alpha_989

1
@ alpha_989 sí.
xthrd
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.