Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Vim = VM
自己紹介
   ハンドルネーム:Shougo
   Vim大好き
   CPUやOSの話も好きです
   職業:学生
   Vim歴:4年
   私の.vimrcは1576行あるぞ!(コメントを除く)
今日はVimの話をします。
なぜVimなのか?


  カーネル / VM探検隊
         ↓
  カーネル / VIM探検隊
         ↓
      Vim
自然な発想!
まじめな解説

         アプリケーション             アプリケーション



 アプリ                  アプリ
ケーション       VMM      ケーション


        ホストOS    ...
「Vimは環境」
   Vimはマルチプラットフォーム
   Vimさえあれば、その上で様々なアプリケーション
     が動作する
    例: テトリス,  Twitterクライアント, シェル,  端末
      辞書ビューワ, フ...
Vimの低レベルレイヤー
   VimはVim Scriptで拡張が可能
   Vim ScriptはOS用語でいえばDevice Driver
   それでも実現不能な場合は外部ライブラリを用い
     るか、ソース本体にパッチを当て...
Vimの通信機能
   全てをVimだけでやることは不可能なので、外部と
     の通信機能が必要
   Vmでいうところの、VM RPC (Remote Procedure 
     Call)
   VimはRuby, Tcl, ...
Emacsとの比較
   Emacsはシェルと通信するための機能が充実して
     いる
    例: shell­mode, term­mode, eshell­mode, comint­
     mode...
   かたくなにエデ...
vimproc
   なければ作ってしまえばいいじゃない! ということ
     で、Yukihiro Nakadairaさんの通信ライブラリを改
     造して使っています。
   pipe, pty, socketを用いた通信が可能
...
vimshell
   100 % Vim Scriptで書かれたシェル
   EmacsでいうところのEshell
   内部の通信ではvimprocを使っている
   neocomplcacheで自動補完
   将来的にはシェルス...
vimshell




今からデモをやります
おまけ
   そろそろVim Scriptに足りない機能が見えてきた。
     パッチを書くべきなのか……
   ちなみに、以前Vim Scriptでバイナリエディタを作ろ
     うとしたことがあります
    →途中で挫折
   ...
Upcoming SlideShare
Loading in …5
×

Vim = VM

6,785 views

Published on

Published in: Technology
  • Be the first to comment

Vim = VM

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

×