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 が どんなファイルでもできるようになる. こんな最高な機能があったなんて!
必要な設定は
- 拡張子に対するグループを設定してやる
- グループに対する操作を設定する
の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の知識を活かした動的なスライドだって書ける!!
君の眼前に広がる世界は広い