SlideShare a Scribd company logo
1 of 12
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にはない便利機能がたくさんある
• 今後に期待

More Related Content

What's hot

今さら聞けないWebサーバの基本知識と選び方
今さら聞けないWebサーバの基本知識と選び方今さら聞けないWebサーバの基本知識と選び方
今さら聞けないWebサーバの基本知識と選び方Endoh Shingo
 
RVM with Server Environment
RVM with Server EnvironmentRVM with Server Environment
RVM with Server EnvironmentYukimitsu Izawa
 
かんたんCMS Picoについて
かんたんCMS PicoについてかんたんCMS Picoについて
かんたんCMS Picoについて高見 知英
 
WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)stmkza
 
社内勉強会 - 書籍管理Webシステム
社内勉強会 - 書籍管理Webシステム社内勉強会 - 書籍管理Webシステム
社内勉強会 - 書籍管理WebシステムNemoto Yusuke
 
最新 Windows azure モバイル・サービス 活用法
最新 Windows azure モバイル・サービス 活用法最新 Windows azure モバイル・サービス 活用法
最新 Windows azure モバイル・サービス 活用法Masaki Yamamoto
 
WebRTCサービスを個人で運営してみた話
WebRTCサービスを個人で運営してみた話WebRTCサービスを個人で運営してみた話
WebRTCサービスを個人で運営してみた話Junki Mizushima
 
concrete5とAWSのほどよい関係
concrete5とAWSのほどよい関係concrete5とAWSのほどよい関係
concrete5とAWSのほどよい関係Takahisa Iwamoto
 
そろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思うそろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思うTadayuki Onishi
 
後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料densan_teacher
 
Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築ichikaway
 
Vagrant×Rails セットアップ講習会資料
Vagrant×Rails セットアップ講習会資料Vagrant×Rails セットアップ講習会資料
Vagrant×Rails セットアップ講習会資料kayo tozaki
 
サーバ構築実践入門
サーバ構築実践入門サーバ構築実践入門
サーバ構築実践入門優之 田中
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発Tatsumi Naganuma
 
Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術Isamu Suzuki
 

What's hot (20)

今さら聞けないWebサーバの基本知識と選び方
今さら聞けないWebサーバの基本知識と選び方今さら聞けないWebサーバの基本知識と選び方
今さら聞けないWebサーバの基本知識と選び方
 
Concrete5×さくら
Concrete5×さくらConcrete5×さくら
Concrete5×さくら
 
Aws privte20110406 arai
Aws privte20110406 araiAws privte20110406 arai
Aws privte20110406 arai
 
RVM with Server Environment
RVM with Server EnvironmentRVM with Server Environment
RVM with Server Environment
 
Pykonjp2014
Pykonjp2014Pykonjp2014
Pykonjp2014
 
かんたんCMS Picoについて
かんたんCMS PicoについてかんたんCMS Picoについて
かんたんCMS Picoについて
 
WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)
 
社内勉強会 - 書籍管理Webシステム
社内勉強会 - 書籍管理Webシステム社内勉強会 - 書籍管理Webシステム
社内勉強会 - 書籍管理Webシステム
 
最新 Windows azure モバイル・サービス 活用法
最新 Windows azure モバイル・サービス 活用法最新 Windows azure モバイル・サービス 活用法
最新 Windows azure モバイル・サービス 活用法
 
WebRTCサービスを個人で運営してみた話
WebRTCサービスを個人で運営してみた話WebRTCサービスを個人で運営してみた話
WebRTCサービスを個人で運営してみた話
 
concrete5とAWSのほどよい関係
concrete5とAWSのほどよい関係concrete5とAWSのほどよい関係
concrete5とAWSのほどよい関係
 
そろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思うそろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思う
 
後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料
 
PHP-Ninjaの裏側
PHP-Ninjaの裏側PHP-Ninjaの裏側
PHP-Ninjaの裏側
 
Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築Nginxを使ったオレオレCDNの構築
Nginxを使ったオレオレCDNの構築
 
My dev env
My dev envMy dev env
My dev env
 
Vagrant×Rails セットアップ講習会資料
Vagrant×Rails セットアップ講習会資料Vagrant×Rails セットアップ講習会資料
Vagrant×Rails セットアップ講習会資料
 
サーバ構築実践入門
サーバ構築実践入門サーバ構築実践入門
サーバ構築実践入門
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術Node.jsに縁のない職場でnode.jsを使い始める戦術
Node.jsに縁のない職場でnode.jsを使い始める戦術
 

Viewers also liked

Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境eagletmt
 
neovim = VM
neovim = VMneovim = VM
neovim = VMShougo
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜Shougo
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacsShougo
 
deoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovimdeoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovimShougo
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovimShougo
 

Viewers also liked (6)

Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境
 
neovim = VM
neovim = VMneovim = VM
neovim = VM
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
deoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovimdeoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovim
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
 

More from cohama

Vim の話
Vim の話Vim の話
Vim の話cohama
 
2016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim82016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim8cohama
 
2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvim2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvimcohama
 
Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014cohama
 
How to use git from vim @vim conf2013
How to use git from vim @vim conf2013How to use git from vim @vim conf2013
How to use git from vim @vim conf2013cohama
 
(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1cohama
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1cohama
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりcohama
 

More from cohama (8)

Vim の話
Vim の話Vim の話
Vim の話
 
2016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim82016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim8
 
2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvim2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvim
 
Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014
 
How to use git from vim @vim conf2013
How to use git from vim @vim conf2013How to use git from vim @vim conf2013
How to use git from vim @vim conf2013
 
(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1(初心者向け) Vim の機能紹介@nagoya.vim #1
(初心者向け) Vim の機能紹介@nagoya.vim #1
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつり
 

2015 12-04 about_neovim