Чи можна легко працювати з .odt, .doc, .docx, .rtf та іншими непрості текстовими форматами у Vim?


14

Іноді хто - то посилає мене .odt, .docі .docxфайл; відкриття їх у OpenOffice - це завжди біль, тому що, ну, OpenOffice.

Зараз я використовую різні інструменти командного рядка (такі як odt2txt) для перетворення цих файлів у звичайний текст, збереження простого тексту у тимчасовий файл, а потім перегляд (а можливо, редагування) його у Vim.

Чи можна це зробити простіше? Можливо, щось із автогрупами? А може, є кращі способи? Я хотів би просто зробити:

$ vim file.odt

А Вім подбав про перетворення мене?

Ще краще (бонусні бали) було б, якби я також зміг зберегти файл (до file.txt), але це не буде створено, поки я не напишу ...

Відповіді:


13

Ви повинні мати можливість додати щось подібне до свого vimrc:

autocmd BufReadPost *.odt :%!odt2txt %

Це відправить весь буфер через odt2txtпрограму після того, як він буде прочитаний vim, але тільки якщо ім'я файлу закінчується .odt.

Існує також плагін textutil.vim, який говорить, що він може робити те, про що ви говорите, для деяких із цих типів файлів (але я особисто не використовував це).

Якщо ви готові редагувати щось трохи більш структуроване, ніж звичайний текст, наприклад, розмітка, ви також можете використовувати pandoc для перетворення:

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основному означає, що якщо я відкрию файл .docx у vim, він замість цього передасть цей файл :%!pandoc -f docx -t markdown, перш ніж відображати його у вікні VIM?
alpha_989

1
@ alpha_989 так.
xthrd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.