Можно ли легко работать с .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.