Est-il possible de travailler facilement avec .odt, .doc, .docx, .rtf et d'autres formats de texte non brut dans Vim?

14

Parfois , quelqu'un me envoie un .odt, .docet le .docxfichier; les ouvrir dans OpenOffice est toujours pénible car, eh bien, OpenOffice.

À l'heure actuelle, j'utilise une variété d'outils de ligne de commande (tels que odt2txt) pour convertir ces fichiers en texte brut, enregistrer le texte brut dans un fichier temporaire, puis le visualiser (et peut-être le modifier) ​​dans Vim.

Cela peut-il être plus facile? Peut-être quelque chose avec des autogroupes? Ou peut-être existe-t-il de meilleures façons? Je voudrais juste faire:

$ vim file.odt

Et que Vim s'occupe de la conversion pour moi?

Encore mieux (points bonus) serait si je pouvais également enregistrer le fichier (dans file.txt), mais que cela ne serait pas créé avant d'écrire ...

Martin Tournoij
la source

Réponses:

13

Vous devriez pouvoir ajouter quelque chose comme ça à votre vimrc:

autocmd BufReadPost *.odt :%!odt2txt %

Cela enverra la totalité du tampon via le odt2txtprogramme après sa lecture par vim, mais uniquement si le nom de fichier se termine par .odt.

Il y a aussi le plugin textutil.vim qui dit qu'il peut faire ce dont vous parlez pour quelques-uns de ces types de fichiers (mais je ne l'ai pas personnellement utilisé).

Si vous souhaitez modifier quelque chose d'un peu plus structuré que du texte brut, comme le démarquage, vous pouvez également utiliser pandoc pour effectuer la conversion:

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

Je n'ai pas réellement testé ces conversions, mais elles devraient fonctionner. Vous devrez peut-être utiliser différents outils en fonction du format de fichier.

xthrd
la source
signifie autocmd BufReadPost *.docx :%!pandoc -f docx -t markdownessentiellement que si j'ouvre un fichier .docx dans vim, il passera plutôt ce fichier à travers :%!pandoc -f docx -t markdown, avant de l'afficher dans la fenêtre VIM?
alpha_989
1
@ alpha_989 oui.
2017