SlideShare a Scribd company logo
1 of 13
Download to read offline
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

What's hot

Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
alwei
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつり
cohama
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
Masahiro Sano
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係
Misao X
 

What's hot (20)

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

Similar to Vim = VM

DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vim
t9md
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
gu4
 
Python Kyoto study LT
Python Kyoto study LTPython Kyoto study LT
Python Kyoto study LT
Naoya Inada
 

Similar to Vim = VM (18)

Vim kindergarten
Vim kindergartenVim kindergarten
Vim kindergarten
 
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vim
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
 
Vimの話
Vimの話Vimの話
Vimの話
 
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
 
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
 
Rios::Proxy - A framework for CLI
Rios::Proxy - A framework for CLIRios::Proxy - A framework for CLI
Rios::Proxy - A framework for CLI
 
Python Kyoto study LT
Python Kyoto study LTPython Kyoto study LT
Python Kyoto study LT
 
My dev env
My dev envMy dev env
My dev env
 
IBMビジネスパートナー合同フェア2019 『Veeamで簡単にクラウドへのバックアップ、リス トアことはじめ』
IBMビジネスパートナー合同フェア2019 『Veeamで簡単にクラウドへのバックアップ、リス トアことはじめ』IBMビジネスパートナー合同フェア2019 『Veeamで簡単にクラウドへのバックアップ、リス トアことはじめ』
IBMビジネスパートナー合同フェア2019 『Veeamで簡単にクラウドへのバックアップ、リス トアことはじめ』
 
Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界
 
PasteHub at kansai emacs 9th
PasteHub at kansai emacs 9thPasteHub at kansai emacs 9th
PasteHub at kansai emacs 9th
 
Swiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPSSwiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPS
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理WF4 + WMI + PS + αで運用管理
WF4 + WMI + PS + αで運用管理
 
2016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim82016 04-15 nl-nagoya_vim8
2016 04-15 nl-nagoya_vim8
 
おすすめVimプラグインまとめ
おすすめVimプラグインまとめおすすめVimプラグインまとめ
おすすめVimプラグインまとめ
 
vim入門 (vim study #1)
vim入門 (vim study #1)vim入門 (vim study #1)
vim入門 (vim study #1)
 

More from 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
 

Recently uploaded

Recently uploaded (10)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

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!