View
4.594
Download
0
Category
Preview:
DESCRIPTION
この発表は伝説の某発表のリメイクである。 我は Kernel/neovim 勉強会 in Tsuskuba にて思った。 「発表にエディタ成分が足りなすぎる」と。そこで我は天啓を受けたのだ。 「エディタ成分が足りないのなら、自分で補えば良い。そのまさかだ、フハハハハ!」 我の名は暗黒真美夢王(ダーク・ネオ・ビムマスター)今ここに neovim は VM であると高らかに宣言する!
Citation preview
neovim = VM
注意:
この発表は 4 年前好評だった某発表のリメイクである。
自己紹介
ハンドルネーム:暗黒美夢王(Shougo) Vim大好き
CPUやOSの話も好きだったのだ、昔はな……
職業:闇の Vim 使い
Vim歴:8年目
.vimrcの行数を数えるのはやめた
今日はneovimの話をしよう。
neovimとは?
意見が合わずにfork した
Vim
なぜneovimなのか?
カーネル / VM探検隊 in つくば↓
カーネル / VIM探検隊 in New Place↓
カーネル / neovim探検隊↓
neovim自然な発想!
まじめな解説
ハードウェア
ホストOS
VMMアプリケーション
アプリケーション
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はシェルと通信するための機能が充実していた
例: shellmode, termmode, eshellmode, comintmode...
しかし、neovimも理論上同じことが出来る
Emacsの利点はだんだん薄れていくのでは?
vimproc
外部インタフェースを用いず、Vimで非同期通信を行うには必須であった
しかし、neovimには標準で非同期通信機能が実装されているので必要性が薄れる
とはいえ一応 neovim でも動くよ!
おまけ
neovimの弱点:開発者が足りない
Vimのアップストリームでの変更をどれだけマージできるか
XEmacsと同じ道を辿らなければよいが
neovimについて詳しい話が聞きたい?
今年の Vim conference で聞けるだろう。クックック……
Recommended