New version of Vim
will be released soon!
2016/4/16 NLNagoya
cohama / @c0hama
Self Introduction
cohama
– Twitter:@c0hama
– Vimmer
Excelホーガンシスト
– Vim プラグインとか
作ります
最近のVim
GitHub vim/vim のコミット数
https://github.com/vim/vim/graphs/contributors
v7.4 ???
最近のVim
バージョンアップ前は動作が不安定になる
http://d.hatena.ne.jp/osyo-manga/20130523/1369277803
最近のVim
バージョンアップ前は動作が不安定になる
http://vim-jp.org/blog/2016/03/23/take-care-of-patch-1577.html
最近のVim
!!!
最近のVim
というわけで、近々 Vim 8 が出ます
Vim 8 に入る機能
• 非同期 IO
• タイマー
• 関数の部分適用
• パッケージマネージャ
• その他
Vimの機能はパッチベースで入るので上記機能は
既にVim.7.4.XXXにある。
Vim 8は安定版の目安のようなもの
Vim 8 の非同期 IO
非同期 IO が公式にサポートされる
• バックグランドでコンパイル、シンタッ
クスチェック、テストなどを実行
(むしろ今までできていなかった...)
vimproc.vim でバックグランド起動はでき
たが結果の取得が非同期でできなかった。
Vim 8 の非同期 IO
• バックグランドで起動
• バックグランドで起動 (コールバック)
let job = job_start('command')
let job = job_start('command',
 {'callback': 'MyCallback'})
Vim 8 の非同期 IO
• channel (pipe) を取得
• channel 経由で標準入出力をやりとり
– ファイルから入力したりバッファへ出力した
りすることもできる
let ch = job_getchannel(job)
let output = ch_readraw(ch)
call ch_sendraw(ch, "hogehogen")
Vim 8 の非同期 IO
REPLを非同期で実行するデモ
タイマー
指定した時間経過後にコールバックを実行
する
– ポーリング
– アニメーション (プログレスバー)
– ゲーム
タイマー
使用例
function! MyHandler(timer)
echo 'Handler called'
endfunction
call timer_start(3000, 'MyHandler')
ラムダ式なんてなかった...
関数の部分適用
使用例
function! Add(x, y)
return a:x + a:y
endfunction
echo Add(2, 3) " => 5
let Add5 = function('Add', [5])
echo Add5(3) " => 8
プラグインマネージャー?
プラグインマネージャー的な機能がデフォ
ルトで用意された (いらない)
Vim 起動時に ~/.vim/pack/{foo}/start
にあるプラグインを読み込む。
プラグインは自分で git clone なりで用意
する必要がある
その他 細かいアップデート
• ビジュアルモードでの<C-a> (インクリ
メント)、<C-x> (デクリメント)
• JSONエンコード、JSONデコード
• assert_equal などテスト用の関数
まとめ
• Vim 8 はもうすぐ出るよ
• エンドユーザにとってすぐに便利に使え
る機能はあまりない
• 主にプラグイン開発者向けの機能が拡充
(特に非同期 IO)

2016 04-15 nl-nagoya_vim8