SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
neovim = VM
注意: 
この発表は 4 年前好評だった 
某発表のリメイクである。
自己紹介 
 ハンドルネーム:暗黒美夢王(Shougo) 
 Vim大好き 
 CPUやOSの話も好きだったのだ、昔はな…… 
 職業:闇の Vim 使い 
 Vim歴:8年目 
 .vimrcの行数を数えるのはやめた
今日はneovimの話をしよう。
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 で聞けるだろう。クックック……

Mais conteúdo relacionado

Mais procurados

暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacsShougo
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014Sugoi Kanari
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発Daisuke Kikuchi
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識alwei
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりcohama
 
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 tinygu4
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?Masahiro Sano
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係Misao X
 
Linuxコマンド入門
Linuxコマンド入門Linuxコマンド入門
Linuxコマンド入門xryuseix
 
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimt9md
 
Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話yuichi kishimoto
 

Mais procurados (20)

暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
 
エディタ戦争
エディタ戦争エディタ戦争
エディタ戦争
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつり
 
Vimはこわくない
VimはこわくないVimはこわくない
Vimはこわくない
 
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)
 
Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
 
Vimの魔術
Vimの魔術Vimの魔術
Vimの魔術
 
rucs_vim LT
rucs_vim LTrucs_vim LT
rucs_vim LT
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係
 
Tdd vim
Tdd vimTdd vim
Tdd vim
 
Mbed2013
Mbed2013Mbed2013
Mbed2013
 
Linuxコマンド入門
Linuxコマンド入門Linuxコマンド入門
Linuxコマンド入門
 
anyframeを使おう
anyframeを使おうanyframeを使おう
anyframeを使おう
 
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vim
 
Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話
 

Semelhante a neovim = VM

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
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理gu4
 
いろいろなデバイスでOpenVNetを動かしてみようとした。
いろいろなデバイスでOpenVNetを動かしてみようとした。いろいろなデバイスでOpenVNetを動かしてみようとした。
いろいろなデバイスでOpenVNetを動かしてみようとした。skipping classes
 

Semelhante a neovim = VM (6)

Vim kindergarten
Vim kindergartenVim kindergarten
Vim kindergarten
 
My dev env
My dev envMy dev env
My dev env
 
20141118 vSS 2014 大阪
20141118 vSS 2014 大阪20141118 vSS 2014 大阪
20141118 vSS 2014 大阪
 
kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!kernelvm1118関西-KVM vs AHF vs HAXM!
kernelvm1118関西-KVM vs AHF vs HAXM!
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
 
いろいろなデバイスでOpenVNetを動かしてみようとした。
いろいろなデバイスでOpenVNetを動かしてみようとした。いろいろなデバイスでOpenVNetを動かしてみようとした。
いろいろなデバイスでOpenVNetを動かしてみようとした。
 

Mais de Shougo

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019Shougo
 
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 2017Shougo
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ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 neovimShougo
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovimShougo
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocompleteShougo
 

Mais de Shougo (6)

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019
 
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
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
 
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
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
 

neovim = VM