Contenu connexe
Similaire à Vim = VM (18)
Vim = VM
- 2. 自己紹介
ハンドルネーム:Shougo
Vim大好き
CPUやOSの話も好きです
職業:学生
Vim歴:4年
私の.vimrcは1576行あるぞ!(コメントを除く)
- 5. まじめな解説
アプリケーション アプリケーション
アプリ アプリ
ケーション VMM ケーション
ホストOS ホストOS
ハードウェア ハードウェア
Type II VMM Vimmer's Environment
- 6. 「Vimは環境」
Vimはマルチプラットフォーム
Vimさえあれば、その上で様々なアプリケーション
が動作する
例: テトリス, Twitterクライアント, シェル, 端末
辞書ビューワ, ファイラー
よって、Vim = VMの式がなりたつ
- 7. Vimの低レベルレイヤー
VimはVim Scriptで拡張が可能
Vim ScriptはOS用語でいえばDevice Driver
それでも実現不能な場合は外部ライブラリを用い
るか、ソース本体にパッチを当てる
ソースにパッチ = カーネルそのものを書き換え
外部ライブラリ = カーネルモジュール
各々で読み換えてください
- 8. Vimの通信機能
全てをVimだけでやることは不可能なので、外部と
の通信機能が必要
Vmでいうところの、VM RPC (Remote Procedure
Call)
VimはRuby, Tcl, Python, Perl等、外部言語のイン
タフェースが充実している
さらに、共有ライブラリも呼び出せる! これはEmacs
では不可能
ただし外部プログラムとの通信機能は弱い
- 9. Emacsとの比較
Emacsはシェルと通信するための機能が充実して
いる
例: shellmode, termmode, eshellmode, comint
mode...
かたくなにエディタであろうとするVimには入る予
定なし
- 10. vimproc
なければ作ってしまえばいいじゃない! ということ
で、Yukihiro Nakadairaさんの通信ライブラリを改
造して使っています。
pipe, pty, socketを用いた通信が可能
vimshellと連携してコマンドのパースが可能
github上で公開中
- 11. vimshell
100 % Vim Scriptで書かれたシェル
EmacsでいうところのEshell
内部の通信ではvimprocを使っている
neocomplcacheで自動補完
将来的にはシェルスクリプトを書けるようにしたい
……
github上で公開中
- 13. おまけ
そろそろVim Scriptに足りない機能が見えてきた。
パッチを書くべきなのか……
ちなみに、以前Vim Scriptでバイナリエディタを作ろ
うとしたことがあります
→途中で挫折
時間があったら再挑戦したいです。目指せVimの
hexlmode!