NeoVim の話
2015/12/5 NGK2015B
cohama / @c0hama
About me
cohama
– Twitter:@c0hama
– Vimmer
– Vim プラグインとか
作ります
– Nagoya.vim 主催
(だった)
今日
• NeoVimの歴史
• Vimとの違い
• NeoVimの今
NeoVimの歴史
• 2014年1月くらい
– Vimからフォークされる
• ソースのリファクタリングによる保守性の確保
• コミュニティ手動の開発 (GitHub)
• 新しいプラグインアーキテクチャ
• 2014年4月くらい
– BountySourceで$30,000くらい集める
– neovim.orgができる
• 2015年11月
– NeoVim 0.1リリース
NeoVimの特徴 (主に機能面)
• 非同期処理 (job-control)
• Msgpack-RPCによるプロセス間通信
• 内蔵ターミナル
• オリジナルVimとの高い互換性
• デフォルトの設定がいい感じ
非同期処理 (job-control)
• 非同期処理はエディタの生命線
– コンパイル、Lintツール、テストなどを実行
中でもコードを眺めたり編集したりしたい
非同期処理 (job-control)
• 実はオリジナルのVimには非同期処理はない
– プロセスのforkはできる
– コールバックはない
– タイマーもない
• QuickRunなどはとてつもない黒魔術で非同
期処理っぽいことを実現している
– Vimの中でVimを呼び出してVim間で通信
– カーソルが動いた時のイベントで呼び出し結果を
ポーリング
非同期処理 (job-control)
• NeoVimなら (黒魔術を使わなくても比較
的簡単に) 非同期処理ができる
Msgpack-RPCによるプロセス間通信
• NeoVimの外部からNeoVimを操作するた
めのAPIが公開されている
• いろんなクライアントがある
https://github.com/neovim/neovim/wiki/Related-projects
(でもたぶんほとんどWIP)
→いろんなプログラミング言語でVimの
プラグインが書ける
内蔵ターミナル
• NeoVimの中にターミナルエミュレータが
入っている
• NeoVim内のターミナルエミュレータから
NeoVimを起動できる
:terminal
NeoVimの今
• 普通に開発は続いています
• ただし、アップストリーム (オリジナルの
Vim) のパッチへの追従はなかなかできて
いない
– 未取り込みのパッチ 177個
おわりに
• NeoVimはVimからフォークされたプロ
ジェクト
• Vimにはない便利機能がたくさんある
• 今後に期待

2015 12-04 about_neovim