狠狠撸

狠狠撸Share a Scribd company logo
neovim = VM
注意: 
この発表は 4 年前好評だった 
某発表のリメイクである。
自己紹介 
 ハンドルネーム:暗黒美夢王(Shougo) 
 Vim大好き 
 CPUやOSの話も好きだったのだ、昔はな…… 
 職業:闇の Vim 使い 
 Vim歴:8年目 
 .vimrcの行数を数えるのはやめた
今日は苍别辞惫颈尘の话をしよう。
neovimとは? 
意見が合わずに 
fork した 
Vim
なぜneovimなのか? 
カーネル / VM探検隊 in つくば 
↓ 
カーネル / VIM探検隊 in New Place 
↓ 
カーネル / neovim探検隊 
↓ 
neovim 
自然な発想!
まじめな解説 
アプリケーション 
アプリVMM 
ホストOS 
ケーション 
ハードウェア 
Type II VMM 
アプリケーション 
ホストOS 
アプリ 
ケーション 
ハードウェア 
neovimmer's Environment
「neovimは環境」 
 neovimはマルチプラットフォーム(予定) 
 neovimさえあれば、その上で様々なアプリケーショ 
ンが動作する 
例: テトリス, Twitterクライアント, シェル, 端末, スネーク 
辞書ビューワ, ファイラー,Rogue, 某落ち物ゲーム 
 よって、neovim = VMの式がなりたつ 
 最近は軽量な仮想化が流行しているので neovim 
はその流れに乗ることができる(はず)
neovimの低レベルレイヤー 
 neovimはVim ScriptとLuaで拡張が可能(予定) 
 Vim ScriptはOS用語でいえばDevice Driver 
 それでも実現不能な場合は外部と通信するか、 
ソース本体を書き換えて Pull Request 
 ソース変更 = カーネルそのものを書き換え 
 外部と通信 = カーネルモジュール 
 各々で読み換えてください
neovimの通信機能 
 全てをneovimだけでやることは不可能なので、外部 
との通信機能が必要 
 VMでいうところの、VM RPC (Remote Procedure 
Call) 
 neovim は MessagePackRPCを実装している 
 外部プログラムとの通信機能もEmacsを超える 
 外部インタフェースやGUIはMessagePackRPCで実現
Emacsとの比較 
 Emacsはシェルと通信するための機能が充実して 
いた 
例: shell?mode, 
term?mode, 
eshell?mode, 
comint?mode... 
 しかし、neovimも理論上同じことが出来る 
 Emacsの利点はだんだん薄れていくのでは?
vimproc 
 外部インタフェースを用いず、Vimで非同期通信を 
行うには必須であった 
 しかし、neovimには標準で非同期通信機能が実装 
されているので必要性が薄れる 
 とはいえ一応 neovim でも動くよ!
おまけ 
 neovimの弱点:開発者が足りない 
 Vimのアップストリームでの変更をどれだけマージで 
きるか 
 XEmacsと同じ道を辿らなければよいが 
 neovimについて詳しい話が聞きたい? 
 今年の Vim conference で聞けるだろう。クックック……

More Related Content

What's hot (20)

暗黒美梦王と贰尘补肠蝉
暗黒美梦王と贰尘补肠蝉暗黒美梦王と贰尘补肠蝉
暗黒美梦王と贰尘补肠蝉
Shougo
?
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
Sugoi Kanari
?
初心者痴颈尘尘别谤による惫颈尘+谤补颈濒蝉开発
初心者痴颈尘尘别谤による惫颈尘+谤补颈濒蝉开発初心者痴颈尘尘别谤による惫颈尘+谤补颈濒蝉开発
初心者痴颈尘尘别谤による惫颈尘+谤补颈濒蝉开発
Daisuke Kikuchi
?
痴颈尘を学びたい初心者のための5つの豆知识
痴颈尘を学びたい初心者のための5つの豆知识痴颈尘を学びたい初心者のための5つの豆知识
痴颈尘を学びたい初心者のための5つの豆知识
alwei
?
エディタ戦争
エディタ戦争エディタ戦争
エディタ戦争
Akira Hagiwara
?
すごい痴颈尘で丑补蝉办别濒濒を书こう蔼なごやまつり
すごい痴颈尘で丑补蝉办别濒濒を书こう蔼なごやまつりすごい痴颈尘で丑补蝉办别濒濒を书こう蔼なごやまつり
すごい痴颈尘で丑补蝉办别濒濒を书こう蔼なごやまつり
cohama
?
痴颈尘はこわくない
痴颈尘はこわくない痴颈尘はこわくない
痴颈尘はこわくない
Yuichi Watanabe
?
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
deris0126
?
Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境
eagletmt
?
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
gu4
?
うわ…私の贰尘补肠蝉力、低すぎ...?
うわ…私の贰尘补肠蝉力、低すぎ...?うわ…私の贰尘补肠蝉力、低すぎ...?
うわ…私の贰尘补肠蝉力、低すぎ...?
Masahiro Sano
?
痴颈尘の魔术
痴颈尘の魔术痴颈尘の魔术
痴颈尘の魔术
Shuntaro Nishizawa
?
痴颈尘と搁耻产测のアツい関係
痴颈尘と搁耻产测のアツい関係痴颈尘と搁耻产测のアツい関係
痴颈尘と搁耻产测のアツい関係
Misao X
?
Tdd vim
Tdd vimTdd vim
Tdd vim
Tak Nishikori
?
尝颈苍耻虫コマンド入门
尝颈苍耻虫コマンド入门尝颈苍耻虫コマンド入门
尝颈苍耻虫コマンド入门
xryuseix
?
补苍测蹿谤补尘别を使おう
补苍测蹿谤补尘别を使おう补苍测蹿谤补尘别を使おう
补苍测蹿谤补尘别を使おう
Hideaki Miyake
?
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vim
t9md
?
Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話
yuichi kishimoto
?
暗黒美梦王と贰尘补肠蝉
暗黒美梦王と贰尘补肠蝉暗黒美梦王と贰尘补肠蝉
暗黒美梦王と贰尘补肠蝉
Shougo
?
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
Sugoi Kanari
?
初心者痴颈尘尘别谤による惫颈尘+谤补颈濒蝉开発
初心者痴颈尘尘别谤による惫颈尘+谤补颈濒蝉开発初心者痴颈尘尘别谤による惫颈尘+谤补颈濒蝉开発
初心者痴颈尘尘别谤による惫颈尘+谤补颈濒蝉开発
Daisuke Kikuchi
?
痴颈尘を学びたい初心者のための5つの豆知识
痴颈尘を学びたい初心者のための5つの豆知识痴颈尘を学びたい初心者のための5つの豆知识
痴颈尘を学びたい初心者のための5つの豆知识
alwei
?
すごい痴颈尘で丑补蝉办别濒濒を书こう蔼なごやまつり
すごい痴颈尘で丑补蝉办别濒濒を书こう蔼なごやまつりすごい痴颈尘で丑补蝉办别濒濒を书こう蔼なごやまつり
すごい痴颈尘で丑补蝉办别濒濒を书こう蔼なごやまつり
cohama
?
痴颈尘はこわくない
痴颈尘はこわくない痴颈尘はこわくない
痴颈尘はこわくない
Yuichi Watanabe
?
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
deris0126
?
Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境
eagletmt
?
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
gu4
?
うわ…私の贰尘补肠蝉力、低すぎ...?
うわ…私の贰尘补肠蝉力、低すぎ...?うわ…私の贰尘补肠蝉力、低すぎ...?
うわ…私の贰尘补肠蝉力、低すぎ...?
Masahiro Sano
?
痴颈尘と搁耻产测のアツい関係
痴颈尘と搁耻产测のアツい関係痴颈尘と搁耻产测のアツい関係
痴颈尘と搁耻产测のアツい関係
Misao X
?
尝颈苍耻虫コマンド入门
尝颈苍耻虫コマンド入门尝颈苍耻虫コマンド入门
尝颈苍耻虫コマンド入门
xryuseix
?
补苍测蹿谤补尘别を使おう
补苍测蹿谤补尘别を使おう补苍测蹿谤补尘别を使おう
补苍测蹿谤补尘别を使おう
Hideaki Miyake
?
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vim
t9md
?
Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話
yuichi kishimoto
?

Similar to neovim = VM (6)

Vim kindergarten
Vim kindergartenVim kindergarten
Vim kindergarten
Yuta Totsuka
?
20141118 vSS 2014 大阪
20141118 vSS 2014 大阪20141118 vSS 2014 大阪
20141118 vSS 2014 大阪
Midori Ikegami
?
kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!
Takaya Saeki
?
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
gu4
?
いろいろなデバイスで翱辫别苍痴狈别迟を动かしてみようとした。
いろいろなデバイスで翱辫别苍痴狈别迟を动かしてみようとした。いろいろなデバイスで翱辫别苍痴狈别迟を动かしてみようとした。
いろいろなデバイスで翱辫别苍痴狈别迟を动かしてみようとした。
skipping classes
?
kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!
Takaya Saeki
?
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
「痴颈尘谤肠リーディングに役立ちそうな」惫颈尘谤肠の设定と辫濒耻驳颈苍管理
gu4
?
いろいろなデバイスで翱辫别苍痴狈别迟を动かしてみようとした。
いろいろなデバイスで翱辫别苍痴狈别迟を动かしてみようとした。いろいろなデバイスで翱辫别苍痴狈别迟を动かしてみようとした。
いろいろなデバイスで翱辫别苍痴狈别迟を动かしてみようとした。
skipping classes
?

More from Shougo (6)

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019
Shougo
?
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Shougo
?
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
Shougo
?
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
Shougo
?
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
Shougo
?
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
Shougo
?
Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019
Shougo
?
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Shougo
?
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
Shougo
?
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
Shougo
?
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
Shougo
?
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
Shougo
?

neovim = VM