É possível trabalhar facilmente com .odt, .doc, .docx, .rtf e outros formatos de texto sem texto simples no Vim?


14

Ocasionalmente alguém me um envia .odt, .doce .docxarquivo; abri-los no OpenOffice é sempre uma dor, porque, bem, o OpenOffice.

No momento, uso várias ferramentas de linha de comando (como odt2txt) para converter esses arquivos em texto sem formatação, salvar o texto sem formatação em um arquivo temporário e depois visualizá-lo (e talvez editá-lo) no Vim.

Isso pode ser facilitado? Talvez algo com grupos automáticos? Ou talvez haja maneiras melhores? Eu gostaria de fazer apenas:

$ vim file.odt

E o Vim cuidou da conversão para mim?

Melhor ainda (pontos de bônus) seria se eu também pudesse salvar o arquivo (em file.txt), mas isso não seria criado até que eu escrevesse ...

Respostas:


13

Você deve poder adicionar algo assim ao seu vimrc:

autocmd BufReadPost *.odt :%!odt2txt %

Isso enviará o buffer inteiro através do odt2txtprograma após a leitura pelo vim, mas somente se o nome do arquivo terminar com .odt.

Há também o plug- in textutil.vim que diz que ele pode fazer o que você está falando em alguns desses tipos de arquivo (mas eu não o usei pessoalmente).

Se você deseja editar algo mais estruturado que o texto sem formatação, como descontos, também pode usar o pandoc para fazer a conversão:

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

Na verdade, não testei essas conversões, mas elas devem funcionar. Pode ser necessário usar ferramentas diferentes, dependendo do formato do arquivo.


faz autocmd BufReadPost *.docx :%!pandoc -f docx -t markdownbasicamente média, que se eu abrir um arquivo .docx no vim, ele irá em vez passar esse arquivo através de :%!pandoc -f docx -t markdown, antes de exibi-lo na janela do VIM?
alpha_989

1
@ alpha_989 sim.
xthrd
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.