Czy w Vimie można łatwo pracować z formatami .odt, .doc, .docx, .rtf i innymi formatami nieszyfrowymi?

14

Od czasu do czasu ktoś mnie wysyła .odt, .doci .docxplik; otwarcie ich w OpenOffice zawsze jest uciążliwe, ponieważ, no cóż, OpenOffice.

Obecnie używam różnych narzędzi wiersza poleceń (takich jak odt2txt) do konwersji tych plików na zwykły tekst, zapisania zwykłego tekstu do pliku tymczasowego, a następnie przeglądania (i być może edycji) w Vimie.

Czy można to ułatwić? Być może coś z autogrupami? A może są lepsze sposoby? Chciałbym po prostu zrobić:

$ vim file.odt

I czy Vim zajął się dla mnie nawróceniem?

Jeszcze lepiej (punkty bonusowe) byłoby, gdybym również mógł zapisać plik (do file.txt), ale to nie zostałoby utworzone, dopóki nie piszę ...

Martin Tournoij
źródło

Odpowiedzi:

13

Powinieneś być w stanie dodać coś takiego do swojego vimrc:

autocmd BufReadPost *.odt :%!odt2txt %

Spowoduje to wysłanie całego bufora przez odt2txtprogram po jego odczytaniu przez vima, ale tylko wtedy, gdy nazwa pliku zakończy się na .odt.

Jest też wtyczka textutil.vim, która mówi, że może zrobić to, o czym mówisz, dla kilku typów plików (ale ja osobiście jej nie użyłem).

Jeśli chcesz edytować coś nieco bardziej uporządkowanego niż zwykły tekst, np. Markdown, możesz również użyć pandoc do wykonania konwersji:

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

Nie testowałem tych konwersji, ale powinny działać. W zależności od formatu pliku może być konieczne użycie różnych narzędzi.

Xth
źródło
oznacza w autocmd BufReadPost *.docx :%!pandoc -f docx -t markdownzasadzie, że jeśli otworzę plik .docx w vimie, zamiast tego przejdzie on przez ten plik :%!pandoc -f docx -t markdown, zanim wyświetli go w oknie VIM?
alpha_989,
1
@ alpha_989 tak.
xth