たけっぱ横丁

the technical document for Vim(Editor), Natural Language Proecssing(NLP) tools and Programming(Python, Ruby, C++ etc).

officeからの脱却作戦

Officeでブイブイ言わせていた俺も, 今じゃUnixの虜. もはやgitとvimが使えないファイルは触りたくないと拒否反応がでる始末さ.

読者はこんな経験ありませんか?

中古で買ったPCで一番はじめにやるのはWindows OSのアンイストール

ヒャーハー

すっかりコンソールの住人になってしまった. あの頃の僕が見たらきっと泣くだろう.

それでも突き進むしかない,薔薇の道じゃない茨の道.

officeからの脱却作戦1 - office 関連フォーマットをテキストに変換する

docx, xlsx, pptxなどの各種形式は オープンな規格に沿って記述されているため
変換ツールによりテキストに簡単に変換できる.

ここでは Apache tika を紹介する. 様々なフォーマットで書かれたファイルをテキスト等に変換してくれる便利ツールだ! jarファイル を ダウンロードし

java -jar $HOME/.local/src/tika-app-1.8.jar file.docx

とすれば, テキストを出力してくれる. この出力内容を各種ソフトウェアで表示するようにすれば, 大きなの問題は解決する.

パスの通る範囲にtikaというファイル名で
以下のようなファイルを作ってしまえば 非常に便利だ.

#/bin/sh
java -jar $HOME/.local/src/tika-app-1.8.jar $@

vim で テキスト読み込みを可能にする

OpenOfficeは辛い... vim で 読めれば ひとまずは問題はないんだ…

ということで, docx, xlsx, pptxをvimで開くときは tikaによってテキストだけを表示する

以下のautocmdを.vimrcに追加しよう.

augroup office_format
    autocmd!
    autocmd BufEnter *.{docx,xlsx,pptx,ppt,doc,xls}  set modifiable
    autocmd BufEnter *.{docx,xlsx,pptx,ppt,doc,xls}  silent %d
    autocmd BufEnter *.{docx,xlsx,pptx,ppt,doc,xls}  silent %read !tika --text %:p 
    autocmd BufEnter *.{docx,xlsx,pptx,ppt,doc,xls}  set readonly
augroup END

vimでOffice関連書式を開こうとすると, BufReadやFileReadが発生しないため
BufEnterでひとまず代用している(情報募集).

これで編集はできないが, ファイルは読み込めるようになる.

git で 差分を表示する

Officeフォーマットだってgitで管理したい!!

gitで困るのが差分を出力できないファイルだ. 差分を表示できなければなんのためにバージョン管理しているか分からない.

でも大丈夫. git は そんな問題を解決する素晴らしい機能を備えている. textconv属性だ! c.f. 7.2 Git のカスタマイズ - Git の属性

ファイルに対する適切なコンバーターを設定してやることで git diff が どんなファイルでもできるようになる. こんな最高な機能があったなんて!

必要な設定は

  1. 拡張子に対するグループを設定してやる
  2. グループに対する操作を設定する

の2つである.

.gitattirubtes に 以下を追加しよう.

; .gitattirubtes
*.docx diff=office
*.xlsx diff=office
*.pptx diff=office
*.xls  diff=office
*.doc  diff=office
*.ppt  diff=office

.gitconfig には 以下の設定を追加だ.

[diff "office"]
    binary = true
    textconv = "tika --text"

これでgit diff で officeやらの変更が見れるようになる. もちろん blame で誰がどの文章を追加したかわかる. 最高だな!

同様の要領で pdfやら画像ファイルも vim, gitで開けるぞ!

markdown, latexファイルでOfficeファイルを作る.

いくら自分がOfficeから卒業したいからと言って
Officeと無縁の生活ができるわけではない.

Officeファイルでくれ,と言われることもあるとおもう そんな時は pandoc でだいたい解決できる.

sudo apt-get install pandoc

latexを使えば, 論文だってスライドだって書ける. reveal.jsを使えば, javascriptの知識を活かした動的なスライドだって書ける!!

君の眼前に広がる世界は広い

参考文献

git diff で Office ファイルの差分を見る Pandocの比較的簡単なインストール方法