SlideShare a Scribd company logo
1 of 27
Download to read offline
Vim の開発環境

     eagletmt



  2012/05/27




 eagletmt   Vim の開発環境
プラグイン




 私が使っている Haskell 用プラグイン
   ghcmod.vim
   neco-ghc
   unite-haddock
 これらの紹介とデモを行います




                   eagletmt   Vim の開発環境
ghcmod.vim




             ghcmod.vim




               eagletmt   Vim の開発環境
ghcmod.vim




        https://github.com/eagletmt/ghcmod-vim

     コンパイルエラー・警告を QuickFix に表示
     HLint による提案を QuickFix に表示
     カーソル下の型を表示




                     eagletmt   Vim の開発環境
ghcmod.vim の導入




 まず ghc-mod をインストール

            cabal install ghc-mod




                 eagletmt   Vim の開発環境
ghcmod.vim の導入

 vimproc を利用しているので先に vimproc をインストール

 Vim のプラグイン管理に不慣れな人は neobundle.vim を利用する
 といいでしょう
 http://vim-users.jp/2011/10/hack238/

    :NeoBundle ’Shougo/vimproc’
    cd $HOME/.vim/bundle/vimproc;
    make -f make unix.mak

 Windows 向けに、コンパイル済みのバイナリ配布あり
 https://github.com/Shougo/vimproc/downloads

    :NeoBundle ’eagletmt/ghcmod-vim’



                     eagletmt   Vim の開発環境
:GhcModCheck
  :GhcModCheck コマンドで GHC からのコンパイルエラー・警告
  を QuickFix に表示

  コンパイルエラー・警告がある場合は自動的に QuickFix を開く




                eagletmt   Vim の開発環境
QuickFix




  Vim に備わっている、主に処理系からのメッセージを表示する
  機能
     メッセージとそれが示しているファイルと位置 (行番号・列
     番号) を表示
     メッセージを選択するとその位置へジャンプ
  などができ、「編集→チェック→修正」のサイクルを快適に行える




              eagletmt   Vim の開発環境
:GhcModCheck
  保存時に自動的にチェックしたい!

  syntastic を利用している人が多いようです
  https://github.com/scrooloose/syntastic




                       eagletmt   Vim の開発環境
:GhcModCheck



  しかし……

     多くのモジュールをインポートしている
     Template Haskell を使っている
     型レベルプログラミングをしている

  とき、チェックに時間がかかり、その間すべての Vim の操作がし
  ばらくブロックされてしまう




                    eagletmt   Vim の開発環境
:GhcModCheckAsync




  :GhcModCheckAsync コマンドは :GhcModCheck を (疑似) 非同期
  的に実行

  ⇒ 保存時に自動的にチェックしてもストレスが少ない!




                    eagletmt   Vim の開発環境
:GhcModLint
  同様に :GhcModLint コマンドで HLint からの提案を QuickFix
  に表示
  非同期版の :GhcModLintAsnyc、非同期的に :GhcModCheck と
  :GhcModLint の両方を行う :GhcModCheckAndLintAsync も




                    eagletmt   Vim の開発環境
:GhcModType

  :GhcModType コマンドでカーソル下の型を表示。型を表示してい
  る部分はハイライトされる。
  ハイライトは :GhcModTypeClear コマンドで消す。



   式
   パターン
   束縛

  の型を表示できる




               eagletmt   Vim の開発環境
:GhcModType の使い道




    コードリーディング時のサポートに
    なかなか型が合わない → とりあえず undefined を書いて
    コンパイルを通して型を見る




               eagletmt   Vim の開発環境
neco-ghc




           neco-ghc




           eagletmt   Vim の開発環境
neco-ghc




  オムニ補完を行う関数 necoghc#omnifunc() を提供するプラグ
  イン。
     インポートするモジュール名の補完
     インポートしているモジュールを考慮した補完
     LANGUAGE プラグマの補完
     OPTIONS GHC プラグマの補完




                 eagletmt   Vim の開発環境
neco-ghc




           eagletmt   Vim の開発環境
neco-ghc の導入




         https://github.com/ujihisa/neco-ghc

    cabal install ghc-mod
    :NeoBundle ’ujihisa/neco-ghc’




                     eagletmt   Vim の開発環境
オムニ補完



 Haskell のファイルを開いているバッファでオムニ補完の関数を
 necoghc#omnifunc に設定

 $HOME/.vimrc に

   autocmd FileType haskell setlocal omnifunc=necoghc#omnifunc

 を追記

 インサートモードで <C-x><C-o> で補完できる




                         eagletmt   Vim の開発環境
自動補完



 neocomplcache を導入することで自動補完が可能に

       https://github.com/Shougo/neocomplcache

   $HOME/.vimrc に
   let g:neocomplcache enable at startup = 1
   または :NeoComplCacheEnable コマンド
 によって neocomplcache を有効化すれば、Haskell ファイルを開
 いているバッファで neco-ghc による自動補完が有効化




                      eagletmt   Vim の開発環境
unite-haddock




                unite-haddock




                   eagletmt   Vim の開発環境
unite-haddock

  unite.vim のインターフェイスで、インストール済みのモジュール
  名の一覧から絞り込んで選択してドキュメントをブラウザを開く




                eagletmt   Vim の開発環境
unite-haddock の導入



  まず unite.vim をインストール

           https://github.com/Shougo/unite.vim

  :NeoBundle ’Shougo/unite.vim’


  unite-haddock をインストール

        https://github.com/eagletmt/unite-haddock

  :NeoBundle ’eagletmt/unite-haddock’




                       eagletmt   Vim の開発環境
:Unite haddock




  :Unite haddock コマンドでインストール済みのモジュール一覧
  を表示

  そこからモジュールを選択し、
     ローカルのドキュメントを開く (デフォルト) (browse local)
     リモート (Hackage) のドキュメントを開く (browse remote)




                   eagletmt   Vim の開発環境
:Unite hoogle
  Hoogle をインストールしてあると、さらに :Unite hoogle で
  Hoogle による検索結果から関数や型のドキュメントを開くことが
  できる




                 eagletmt   Vim の開発環境
Hoogle の導入




    cabal install hoogle
    hoogle data default
    hoogle data vector
       vector.hoo を作成
    hoogle combine *.hoo
       *.hoo をまとめて default.hoo を作成




                     eagletmt   Vim の開発環境
デモ




       デモ




     eagletmt   Vim の開発環境

More Related Content

What's hot

Vim = VM
Vim = VMVim = VM
Vim = VMShougo
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜Shougo
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?Masahiro Sano
 
Unite vim
Unite vim Unite vim
Unite vim Shougo
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacsShougo
 
Vagrant intro
Vagrant introVagrant intro
Vagrant introt9md
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発Daisuke Kikuchi
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tinygu4
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacsShougo
 
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)deris0126
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたkyon mm
 
Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化hiroyuki nakajima
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識alwei
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係Misao X
 

What's hot (20)

Vim = VM
Vim = VMVim = VM
Vim = VM
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
 
Unite vim
Unite vim Unite vim
Unite vim
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
 
Vagrant intro
Vagrant introVagrant intro
Vagrant intro
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
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)
 
Tdd vim
Tdd vimTdd vim
Tdd vim
 
Vimの魔術
Vimの魔術Vimの魔術
Vimの魔術
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
 
Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
 
Monit
MonitMonit
Monit
 
Mbed2013
Mbed2013Mbed2013
Mbed2013
 
FlexUnit4とMockitoFlex
FlexUnit4とMockitoFlexFlexUnit4とMockitoFlex
FlexUnit4とMockitoFlex
 
Vimperator abc
Vimperator abcVimperator abc
Vimperator abc
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係
 

Similar to Vim の開発環境

Using xvim with macvim
Using xvim with macvimUsing xvim with macvim
Using xvim with macvimpebble8888
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)Iwana Chan
 
CMake multiplatform build-tool
CMake multiplatform build-toolCMake multiplatform build-tool
CMake multiplatform build-toolNaruto TAKAHASHI
 
Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門Takeshi Morikawa
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理gu4
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929hiro345
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見るDockerでlamp環境を作って見る
Dockerでlamp環境を作って見るzhengen lin
 
Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2Kazuhito Matsuda
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料teruyaono1
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎Daisuke Hiraoka
 
Adaptive optimization of JIT compiler
Adaptive optimization of JIT compilerAdaptive optimization of JIT compiler
Adaptive optimization of JIT compilernothingcosmos
 
Cosmomc Install
Cosmomc InstallCosmomc Install
Cosmomc Installphillippro
 
cosmomc install
cosmomc installcosmomc install
cosmomc installphillippro
 
Cosmomc Install
Cosmomc InstallCosmomc Install
Cosmomc Installphillippro
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfesTakeshi Komiya
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携Tomoaki Shimizu
 
Al mininum 47redmine-2nd
Al mininum 47redmine-2ndAl mininum 47redmine-2nd
Al mininum 47redmine-2ndmikoto20000
 

Similar to Vim の開発環境 (20)

Using xvim with macvim
Using xvim with macvimUsing xvim with macvim
Using xvim with macvim
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
 
CMake multiplatform build-tool
CMake multiplatform build-toolCMake multiplatform build-tool
CMake multiplatform build-tool
 
Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門Cloud Foundry Cli Plugin入門
Cloud Foundry Cli Plugin入門
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見るDockerでlamp環境を作って見る
Dockerでlamp環境を作って見る
 
Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2Kubernetes Meetup Tokyo #23 kubebuilder-v2
Kubernetes Meetup Tokyo #23 kubebuilder-v2
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
 
Docker & Kubernetes基礎
Docker & Kubernetes基礎Docker & Kubernetes基礎
Docker & Kubernetes基礎
 
Adaptive optimization of JIT compiler
Adaptive optimization of JIT compilerAdaptive optimization of JIT compiler
Adaptive optimization of JIT compiler
 
Cosmomc Install
Cosmomc InstallCosmomc Install
Cosmomc Install
 
cosmomc install
cosmomc installcosmomc install
cosmomc install
 
Cosmomc Install
Cosmomc InstallCosmomc Install
Cosmomc Install
 
Cosmomc
CosmomcCosmomc
Cosmomc
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
 
Al mininum 47redmine-2nd
Al mininum 47redmine-2ndAl mininum 47redmine-2nd
Al mininum 47redmine-2nd
 

Vim の開発環境

  • 1. Vim の開発環境 eagletmt 2012/05/27 eagletmt Vim の開発環境
  • 2. プラグイン 私が使っている Haskell 用プラグイン ghcmod.vim neco-ghc unite-haddock これらの紹介とデモを行います eagletmt Vim の開発環境
  • 3. ghcmod.vim ghcmod.vim eagletmt Vim の開発環境
  • 4. ghcmod.vim https://github.com/eagletmt/ghcmod-vim コンパイルエラー・警告を QuickFix に表示 HLint による提案を QuickFix に表示 カーソル下の型を表示 eagletmt Vim の開発環境
  • 5. ghcmod.vim の導入 まず ghc-mod をインストール cabal install ghc-mod eagletmt Vim の開発環境
  • 6. ghcmod.vim の導入 vimproc を利用しているので先に vimproc をインストール Vim のプラグイン管理に不慣れな人は neobundle.vim を利用する といいでしょう http://vim-users.jp/2011/10/hack238/ :NeoBundle ’Shougo/vimproc’ cd $HOME/.vim/bundle/vimproc; make -f make unix.mak Windows 向けに、コンパイル済みのバイナリ配布あり https://github.com/Shougo/vimproc/downloads :NeoBundle ’eagletmt/ghcmod-vim’ eagletmt Vim の開発環境
  • 7. :GhcModCheck :GhcModCheck コマンドで GHC からのコンパイルエラー・警告 を QuickFix に表示 コンパイルエラー・警告がある場合は自動的に QuickFix を開く eagletmt Vim の開発環境
  • 8. QuickFix Vim に備わっている、主に処理系からのメッセージを表示する 機能 メッセージとそれが示しているファイルと位置 (行番号・列 番号) を表示 メッセージを選択するとその位置へジャンプ などができ、「編集→チェック→修正」のサイクルを快適に行える eagletmt Vim の開発環境
  • 9. :GhcModCheck 保存時に自動的にチェックしたい! syntastic を利用している人が多いようです https://github.com/scrooloose/syntastic eagletmt Vim の開発環境
  • 10. :GhcModCheck しかし…… 多くのモジュールをインポートしている Template Haskell を使っている 型レベルプログラミングをしている とき、チェックに時間がかかり、その間すべての Vim の操作がし ばらくブロックされてしまう eagletmt Vim の開発環境
  • 11. :GhcModCheckAsync :GhcModCheckAsync コマンドは :GhcModCheck を (疑似) 非同期 的に実行 ⇒ 保存時に自動的にチェックしてもストレスが少ない! eagletmt Vim の開発環境
  • 12. :GhcModLint 同様に :GhcModLint コマンドで HLint からの提案を QuickFix に表示 非同期版の :GhcModLintAsnyc、非同期的に :GhcModCheck と :GhcModLint の両方を行う :GhcModCheckAndLintAsync も eagletmt Vim の開発環境
  • 13. :GhcModType :GhcModType コマンドでカーソル下の型を表示。型を表示してい る部分はハイライトされる。 ハイライトは :GhcModTypeClear コマンドで消す。 式 パターン 束縛 の型を表示できる eagletmt Vim の開発環境
  • 14. :GhcModType の使い道 コードリーディング時のサポートに なかなか型が合わない → とりあえず undefined を書いて コンパイルを通して型を見る eagletmt Vim の開発環境
  • 15. neco-ghc neco-ghc eagletmt Vim の開発環境
  • 16. neco-ghc オムニ補完を行う関数 necoghc#omnifunc() を提供するプラグ イン。 インポートするモジュール名の補完 インポートしているモジュールを考慮した補完 LANGUAGE プラグマの補完 OPTIONS GHC プラグマの補完 eagletmt Vim の開発環境
  • 17. neco-ghc eagletmt Vim の開発環境
  • 18. neco-ghc の導入 https://github.com/ujihisa/neco-ghc cabal install ghc-mod :NeoBundle ’ujihisa/neco-ghc’ eagletmt Vim の開発環境
  • 19. オムニ補完 Haskell のファイルを開いているバッファでオムニ補完の関数を necoghc#omnifunc に設定 $HOME/.vimrc に autocmd FileType haskell setlocal omnifunc=necoghc#omnifunc を追記 インサートモードで <C-x><C-o> で補完できる eagletmt Vim の開発環境
  • 20. 自動補完 neocomplcache を導入することで自動補完が可能に https://github.com/Shougo/neocomplcache $HOME/.vimrc に let g:neocomplcache enable at startup = 1 または :NeoComplCacheEnable コマンド によって neocomplcache を有効化すれば、Haskell ファイルを開 いているバッファで neco-ghc による自動補完が有効化 eagletmt Vim の開発環境
  • 21. unite-haddock unite-haddock eagletmt Vim の開発環境
  • 22. unite-haddock unite.vim のインターフェイスで、インストール済みのモジュール 名の一覧から絞り込んで選択してドキュメントをブラウザを開く eagletmt Vim の開発環境
  • 23. unite-haddock の導入 まず unite.vim をインストール https://github.com/Shougo/unite.vim :NeoBundle ’Shougo/unite.vim’ unite-haddock をインストール https://github.com/eagletmt/unite-haddock :NeoBundle ’eagletmt/unite-haddock’ eagletmt Vim の開発環境
  • 24. :Unite haddock :Unite haddock コマンドでインストール済みのモジュール一覧 を表示 そこからモジュールを選択し、 ローカルのドキュメントを開く (デフォルト) (browse local) リモート (Hackage) のドキュメントを開く (browse remote) eagletmt Vim の開発環境
  • 25. :Unite hoogle Hoogle をインストールしてあると、さらに :Unite hoogle で Hoogle による検索結果から関数や型のドキュメントを開くことが できる eagletmt Vim の開発環境
  • 26. Hoogle の導入 cabal install hoogle hoogle data default hoogle data vector vector.hoo を作成 hoogle combine *.hoo *.hoo をまとめて default.hoo を作成 eagletmt Vim の開発環境
  • 27. デモ デモ eagletmt Vim の開発環境