SlideShare a Scribd company logo
Vim = VM
自己紹介
   ハンドルネーム:Shougo
   Vim大好き
   CPUやOSの話も好きです
   職業:学生
   Vim歴:4年
   私の.vimrcは1576行あるぞ!(コメントを除く)
今日はVimの話をします。
なぜVimなのか?


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

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



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


        ホストOS                ホストOS


    ハードウェア                ハードウェア


  Type II VMM       Vimmer's Environment
「Vimは環境」
   Vimはマルチプラットフォーム
   Vimさえあれば、その上で様々なアプリケーション
     が動作する
    例: テトリス,  Twitterクライアント, シェル,  端末
      辞書ビューワ, ファイラー
   よって、Vim = VMの式がなりたつ
Vimの低レベルレイヤー
   VimはVim Scriptで拡張が可能
   Vim ScriptはOS用語でいえばDevice Driver
   それでも実現不能な場合は外部ライブラリを用い
     るか、ソース本体にパッチを当てる
   ソースにパッチ = カーネルそのものを書き換え
   外部ライブラリ = カーネルモジュール
   各々で読み換えてください
Vimの通信機能
   全てをVimだけでやることは不可能なので、外部と
     の通信機能が必要
   Vmでいうところの、VM RPC (Remote Procedure 
     Call)
   VimはRuby, Tcl, Python, Perl等、外部言語のイン
     タフェースが充実している
   さらに、共有ライブラリも呼び出せる! これはEmacs
     では不可能
   ただし外部プログラムとの通信機能は弱い
Emacsとの比較
   Emacsはシェルと通信するための機能が充実して
     いる
    例: shell­mode, term­mode, eshell­mode, comint­
     mode...
   かたくなにエディタであろうとするVimには入る予
     定なし
vimproc
   なければ作ってしまえばいいじゃない! ということ
     で、Yukihiro Nakadairaさんの通信ライブラリを改
     造して使っています。
   pipe, pty, socketを用いた通信が可能
   vimshellと連携してコマンドのパースが可能
   github上で公開中
vimshell
   100 % Vim Scriptで書かれたシェル
   EmacsでいうところのEshell
   内部の通信ではvimprocを使っている
   neocomplcacheで自動補完
   将来的にはシェルスクリプトを書けるようにしたい
     ……
   github上で公開中
vimshell




今からデモをやります
おまけ
   そろそろVim Scriptに足りない機能が見えてきた。
     パッチを書くべきなのか……
   ちなみに、以前Vim Scriptでバイナリエディタを作ろ
     うとしたことがあります
    →途中で挫折
   時間があったら再挑戦したいです。目指せVimの
     hexl­mode!

More Related Content

PDF
neovim = VM
PDF
Unite vim
PDF
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
ODP
modern X86 environment
PDF
Vimから見たemacs
ODP
Ultimate completion environment with neocomplcache in vim
PDF
neobundle.vimについて+おまけ
PDF
暗黒美夢王とEmacs
neovim = VM
Unite vim
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
modern X86 environment
Vimから見たemacs
Ultimate completion environment with neocomplcache in vim
neobundle.vimについて+おまけ
暗黒美夢王とEmacs

What's hot (20)

PDF
Shougoの開発環境
PDF
Vimを学びたい初心者のための5つの豆知識
PDF
かなりすごい発表(かなり) at VimConf2014
PPTX
エディタ戦争
PPTX
初心者Vimmerによるvim+rails開発
PDF
Vimはこわくない
PDF
「とても小さいVim」vim tiny
 
PDF
すごいVimでhaskellを書こう@なごやまつり
PDF
Vim の開発環境
PDF
Vimの魔術
PDF
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
PDF
うわ…私のEmacs力、低すぎ...?
PDF
rucs_vim LT
PDF
Mbed2013
PDF
Tdd vim
PPTX
Packerで自動化
ODP
Vimperator abc
PDF
Php beginnerが beginner + になるための話
PPTX
Web based 3D video streaming system “Depstreamer(仮)”
PDF
VimとRubyのアツい関係
Shougoの開発環境
Vimを学びたい初心者のための5つの豆知識
かなりすごい発表(かなり) at VimConf2014
エディタ戦争
初心者Vimmerによるvim+rails開発
Vimはこわくない
「とても小さいVim」vim tiny
 
すごいVimでhaskellを書こう@なごやまつり
Vim の開発環境
Vimの魔術
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
うわ…私のEmacs力、低すぎ...?
rucs_vim LT
Mbed2013
Tdd vim
Packerで自動化
Vimperator abc
Php beginnerが beginner + になるための話
Web based 3D video streaming system “Depstreamer(仮)”
VimとRubyのアツい関係
Ad

Similar to Vim = VM (20)

PDF
「Vim初心者によるVim入門@haman29」
PDF
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
 
PDF
10分で作るScala開発環境 using vim
PPTX
kyoto vim#1
PDF
Nagoya vim #1 about plugins
PPT
080720 Vim M
PDF
Vim script と vimrc の正しい書き方@nagoya.vim #1
PDF
Vimのpluginを書く
PPTX
秋のVim祭り Rubyを添えて
PDF
易しいVim
PPTX
2015 12-04 about_neovim
PDF
Vimプラグインを使おう
PDF
Vim入門 20130210
PDF
Vim の話
PPT
Linuxにおける開発環境
PDF
Vim衆のつどい
PDF
vim入門 (vim study #1)
PDF
PDF
Vim kindergarten
PDF
kyotovim#1
「Vim初心者によるVim入門@haman29」
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
 
10分で作るScala開発環境 using vim
kyoto vim#1
Nagoya vim #1 about plugins
080720 Vim M
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vimのpluginを書く
秋のVim祭り Rubyを添えて
易しいVim
2015 12-04 about_neovim
Vimプラグインを使おう
Vim入門 20130210
Vim の話
Linuxにおける開発環境
Vim衆のつどい
vim入門 (vim study #1)
Vim kindergarten
kyotovim#1
Ad

More from Shougo (6)

PDF
Vim conf2019
ODP
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
ODP
カードゲームで学ぶテキストエディタ
PDF
deoplete: The dark powered auto completion plugin for neovim
PDF
Let's talk about neovim
PDF
An introduction to neocomplete
Vim conf2019
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
カードゲームで学ぶテキストエディタ
deoplete: The dark powered auto completion plugin for neovim
Let's talk about neovim
An introduction to neocomplete

Vim = VM

  • 2. 自己紹介  ハンドルネーム:Shougo  Vim大好き  CPUやOSの話も好きです  職業:学生  Vim歴:4年  私の.vimrcは1576行あるぞ!(コメントを除く)
  • 4. なぜVimなのか? カーネル / VM探検隊 ↓ カーネル / VIM探検隊 ↓ Vim 自然な発想!
  • 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はシェルと通信するための機能が充実して いる 例: shell­mode, term­mode, eshell­mode, 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の hexl­mode!