棚からパルチャギ

日々の雑記、ニュース拾いとか

2013. 07. 18

MS Word文書もvimで開きたい
$ brew install antiword $ vi ~/.vimrc autocmd BufReadPre *.doc set readonly autocmd BufReadPost *.doc silent %!/usr/local/bin/antiword -m UTF-8.txt '%'
参考: View and diff MS Word files

2013. 05. 17

tern_for_vim導入の話

tern.vimでvimでjavascriptの補完など(vim advent calendar2012, 155日目) - kozo2's blog

リポジトリ独立してから、vimプラグインにternのパッケージ定義が追加されて個別にternをインストールする必要はなくなったので、少し古い感じもする。 自分が導入した時のメモ書きを残しておくなど。

i. インストール

NeoBundleを使っている場合、.vimrcに以下のような記述を追加して :NeoBundleInstall すればよい。 そうでない場合には、~/.vim/bundle/tern_for_vim で npm install を手動実行する。

NeoBundle 'marijnh/tern_for_vim', { \ 'build': { \ 'others': 'npm install' \}}

tern_for_vimはjavascriptのftpluginとして読み込まれて、内部で(勝手に) omnifunc=tern#Complete が実行される。 neocomplcacheでomni補完が無効化されていなければ、特に気にすることなく使えるはず。 サーバは裏で勝手に起動してくれる。

悲しいことに補完周りはjscomplete-vimと競合してしまう。 jscomplete-vimは高速で実用的な補完を実現してくれるので、まだ捨て難い気がしている。

ii. 設定ファイル

.tern-project というファイルを生成すると、そのファイルを含む階層以下でternの設定を変更することができる。 設定の詳細については公式のドキュメントに記載があるけれど、だいたい下記のような感じ。

{ "libs": [ "browser", "ecma5", "jquery" ], "loadEagerly": [ "importantfile.js" ], "plugins": { "node": {}, "requirejs": { "baseURL": "./", "paths": {} } } }

libsは追加で読み込む補完定義を指定する。 デフォルトではbrowser/ecma5/jqueryが用意されていて、browserは console.log() だったりブラウザで拡張されているオブジェクトなどへの対応、ecma5はECMAScript5で追加された要素、jqueryは $("#hoge").click() なんかでも補完できるようになる。

プロジェクトルート(.tern-projectの配置されたディレクトリ)下にlibsディレクトリを作成して、自分で用意した補完定義を読みこませることもできる。

loadEagerlyは指定したファイルを事前に読み込み済みにしておいてくれるようだけど、補完が効くようになるわけでもなく挙動はいまいち分かっていない。。

pluginsはnodeとrequirejsが用意されている。 いずれも指定すると、読み込み先モジュールの補完が効くようになってこれは非常に便利だった。素敵。 libs同様にpluginsディレクトリ下に自前のプラグインを設置できる。


  [ 1 ]