neobundle.vim


  プログラマー達よ
これがテキストエディタだ
自己紹介(いつもの)
●   一部には有名な Vimmer です
●   neocomplcache とか unite.vim とか作りました
●   去年、本を書きました(共著)
●   Vimmer ですが、 Emacs 勉強会にも参加します
●   ujihisa.vim と聞いてやって来ました
● 今回は歌がありません
● 今回は歌がありません

●   大事な事なので二度(ry
あなたはプラグインマネージャを
        使っていますか?
●   プラグインが乱立する時代、様々なプラグインを使
    い分けるためにプラグインマネージャは必須となり
    つつある
●   テキストエディタでなくても、Haskell, Python,
    Ruby, Go など、ライブラリ用のマネージャを搭載す
    る例は多い
●   最近だと、 Emacs もプラグインマネージャを標準
    搭載
●   Vimも負けてられない!
乱立するプラグインマネージャ
●   Vundle
●   Vim-addon-manager
●   Vimana                乱立するプラグインマネージャに
●   vim-flavor                新たな光が!
●   Pathogen
●   neobundle.vim
●   番外: git-submodule, VimJolts
●   Emacs: el-get.el, package.el, auto-install.el
neobundle.vim とは?
●   既存のプラグインマネージャが気に入らなかったた
    め、最強を目指して開発されたプラグインマネー
    ジャ
●   後発なだけに、他のプラグインマネージャを研究し
    て開発した
●   基本的な使用方法は Vundle に類似している
●   プラグインの設定は Bundle → NeoBundle とす
    ればそのまま使える
よくある誤解
●   Q: Vundle と neobundle.vim ってほとんど同じ
    もの?
●   A: 設定に一部互換性があるだけで、全然違います
既存のプラグインに対する利点
●   Vundle との互換性
●   Subversion, Mercurial 対応
●   プラグイン検索
●   unite.vim インタフェース
●   非同期アップデート
●   リビジョンロック、ブランチロック
●   遅延ロード
    etc...
neobundle.vim の簡単な使用方法
 $ git clone git://github.com/Shougo/neobundle.vim.git


 if has('vim_starting')
  set runtimepath+={path to neobundle directory}      neobundle.vimを
                                                     呼び出せるようにする
 endif
 call neobundle#rc(expand('~/.vim/bundle'))
                                                       neobundle.vim
                                                          の初期化
 " My Bundles here:
 NeoBundle “Shougo/neobundle.vim”
                                                   neobundle.vimが管理する
                                                       プラグインの登録
 filetype plugin indent on   " required!
:NeoBundle コマンド
 ●   プラグインを neobundle.vim に登録する
 ●   プラグインがインストールされていても、このコマン
     ドが .vimrc になければ読み込まれない
 ●   Vundle の :Bundle コマンドに相当        プラグインの
                                    リポジトリアドレス
                                       を指定




NeoBundle 'Shougo/vimfiler'            引数でオプション
                                        を指定できる
NeoBundle 'github:mattn/gist-vim.git'
NeoBundle
    'git://github.com/Shougo/unite.vim.git',
     {'directory' : 'unite'}
:NeoBundle コマンドの引数
  ●   github, vim.org に存在するプラグインのアドレス
      は省略できる
  ●   もちろん省略せずにフルパスを書いても良い
  ●   リポジトリのユーザー名があれば github の Vim
      plugin
                                        同じ意味


NeoBundle 'git://github.com/Shougo/unite.vim.git'
NeoBundle 'Shougo/unite.vim'
NeoBundle 'CSApprox'                  プラグイン名のみだと
                                     Vim.orgのプラグイン
                                           を表す
:NeoBundleInstall,
     :NeoBundleUpdate コマンド
●   登録されたプラグインをインストール・アップデート
    するコマンド
●   :NeoBundle コマンドだけではインストールされな
    いことに注意する
●   Vundleの :BundleInstall, :BundleInstall! コマ
    ンドに相当
●   引数を与えることで、指定したプラグインのみインス
    トール・アップデート可能
        –   プラグイン名はあいまい検索される
    NeoBundleInstall neocomplcache
プラグインのアンインストール方法
●   アンインストールしたいプラグインの :NeoBundle
    コマンドを削除かコメントアウトする
●   :NeoBundleClean コマンドを実行
●   Vundle の :BundleClean とほぼ同じ
●   引数にプラグイン名を与えれば現在読み込まれて
    いるプラグインも削除できる(が、危険)
Vundle との互換性
●   コマンドは基本的に Bundle → NeoBundle とす
    れば使える
●   引数も同じだが、整理・拡張されている
●   Vundle の場合、プラグイン名が Vundle なのにコ
    マンド名が Bundle なのでわかりにくい
●   Vundle ではわかりにくかったコマンドには別名を
    用意している
      –   例: NeoBundleInstall! → NeoBundleUpdate
●   :NeoBundle コマンドの後にコメントを記述可能
NeoBundleInstall neocomplcache “ Foo, Bar
git 以外のリポジトリに対応
 ●   Vundle は現在 git 専用だが、 neobundle は git
     以外にも Subversion, Mercurial にも対応してい
     る
 ●   しかも、他の VCS にも容易に対応可能な構造
 ●   ちなみに、Vundle でもよく要望されている
NeoBundle
 'http://svn.macports.org/repository/macports/
contrib/mpvim/'
リビジョンロック・ブランチロック
 ●   引数にリビジョン番号やブランチ名を指定すること
     で、特定のリビジョンや特定のブランチを使用する
     ことができる
 ●   インストール・アップデートするときに切り替わる
 ●   ちなみに、Vundle でよく要望されている機能
NeoBundle 'Shougo/vimfiler', 'ver.1.50'
NeoBundle 'Shougo/vimshell',{ 'rev' : '3787e5' }
アップデート時の自動ビルド
 ●   vimproc はアップデートすると再ビルドが必要だ
     が、それを自動化できる
 ●   ロードしたプラグインを解放できない Windows で
     は残念ながら無理


NeoBundle 'Shougo/vimproc', { 'build' : {
         'cygwin' : 'make -f make_cygwin.mak',
         'mac' : 'make -f make_mac.mak',
         'unix' : 'make -f make_unix.mak',
        },
     }
pathogen 互換機能
●   neobundle.vim は pathogen と設定の互換性は
    ないが、pathogen と同様、ある特定のディレクトリ
    からプラグインを読み込むことができる
●   :NeoBundleLocal コマンドを使用する
       –   実はこのコマンドはシンタックスシュガー


    NeoBundleLocal ~/.vim/bundle
依存関係の定義
●   プラグインごとに依存関係を定義できる
●   依存関係が定義されている場合、依存関係にある
    プラグインもインストール・アップデートされる
●   すでに neobundle 内で設定されている場合は無
    視される
●   依存関係を定義するには、NeoBundle コマンドの
    オプションに depends を指定する

    NeoBundle 'Shougo/vimfiler',
           { 'depends' : 'Shougo/unite.vim' }
プラグインの遅延ロード
●   特定の状況でしか使わないプラグインを遅延ロード
    できる
●   Vim の起動速度が早くなる
●   使わないけど、削除するのが忍びない場合にも便利
●   :NeoBundle の代わりに :NeoBundleLazy を使用
●   ロードするには :NeoBundleSource コマンド

    NeoBundleLazy 'RipRip/clang_complete',
    Autocmd FileType cpp
     NeoBundleSource clang_complete
非同期アップデート
●   neobundle.vim は vimproc を自動認識し、
    vimproc がインストールされていると非同期でイン
    ストール・アップデートできるようになる
●   基本的に、Windows はアップデートが遅いが非同
    期アップデートすることで3倍くらい早くなる
●   これは一度体感して見るべき
unite.vim インタフェース
●   unite.vim 上でプラグインの管理やインストール・
    アップデートが行える
●   :Unite neobundle でプラグインの管理
●   :Unite neobundle/install でプラグインのインス
    トール
●   :Unite neobundle/update でプラグインのアップ
    デート
●   デモ
プラグイン検索
●   unite.vim 上でプラグインの検索が行える
●   :Unite neobundle/search
●   当然プラグイン名で絞り込みが可能
●   標準で、vim.org に存在するプラグインの検索が可能
●   レシピを追加すれば他のプラグインも検索可能
●   デフォルトではプラグインの設定をヤンクする
●   install アクションで直接インストールも可能
●   デモ
レシピによるプラグイン定義
●   標準で検索できるのは、vim.org に存在するプラグイ
    ンのみ
●   el-get.el のように、外部レシピを用意して検索できる
●   レシピは neobundle.vim の検索機能から参照可能
●   標準外部レシピ(Pull request 歓迎)
    https://github.com/Shougo/neobundle-vim-scripts
●   みんなもレシピを書いて共有しよう
レシピの使い方
●   配布されているレシピは neobundle 上で管理できる
●   NeoBundle 'Shougo/neobundle-vim-scripts'
    と .vimrc に記述すれば OK
●   正確には、 'runtime' オプションからたどれるディレク
    トリにある receipes/*.json が読み込まれる
●   neobundle-vim-scripts は receipes/*.json を提供
    しているだけ
●   つまり、オレオレレシピを作成するのも簡単! 
レシピの書き方
●   receipes/*.json には :NeoBundle コマンドのオプ
    ション指定と同様、ディクショナリを指定する
●   指定できるキーはドキュメントを参照
         :help neobundle-receipe
●   レシピは neobundle.vim 以外でも使用できる(プラ
    グインが対応すれば)
{'name' : 'unite.vim',
 'path' : 'Shougo/unite.vim',
 'description' : 'Ultimate interface ...',
 'author' : 'Shougo',
'website':'https://github.com/Shougo/unite.vim',
 'script_type' : 'plugin',}
今後のneobundle.vim
●   新機能の開発はほぼ終了している
●   あとはレシピの充実とメンテナンス
●   そろそろ vim.org に公開?
      –   外国人に対して知名度が無すぎる
      –   neocomplcache は有名なのに……
まとめ
●   さぁ、みなさんも neobundle.vim を使ってみよう
    https://github.com/Shougo/neobundle.vim
●   余談: Vim テクニックバイブルの執筆後に
    neobundle.vim を開発したので、Vim テクニック
    バイブルには neobundle.vim は載っていません
●   Vundle は載っています
おわり
●   と思いきや……
●   ここで終わらないのが私の発表
最近のアニメやラノベ
●   ビム・アート・オンライン(通称:ビマーオンライン)
●   テキストエディタだけど、愛さえあれば関係ないよね!
●   俺の妹は Vim script が書ける
●   美夢二病だけど恋したい
●   Vim はじめました
●   俺は .vimrc が少ない
●   キングビム
●   エディカツ!
美夢二病とは?
●   Vim 使用から二年目移行で陥りやすい病気
●   自分は Vim に選ばれた存在であり、Vim の力で
    全てが解決できると思ってしまう
      –   いわゆるエディタに関して「痛い」人(エディ痛)
●   普通はすぐに治るが、重症化すると治すのは難しい
      –   誰とは言いませんが……
いわゆる美夢二病的発言例(1)
●   くっそ、また俺の Vim が暴れだしやがった!
●   ふ、Vim を使わぬものにはわからんだろう…
●   くっ……これが Vim の力ってやつか
●   宗教は Vim だけで十分だぜ
●   完全に、Vimmer として覚醒している……!
●   他エディタ使いがまた近づいてきたみたいだな
●   はン……Vim のことを知りたいのか
●   ビムアイ(Vim 愛、Vim 眼)
いわゆる美夢二病的発言例(2)
●   エターナルフォースビムザード! 相手のエディタは
    クラッシュする
●   本当に存在(あ)ったのか……「忘却の彼方へと葬
    られし黒魔術(プラグイン)が……」
●   Vim を使うと「美夢羅(ビムラ)」という魔族の人格
    が現れる
●   (勉強会で Vimmer を発見して)っく……美夢眼が
    ……共鳴している……!?
いわゆる美夢二病的発言例(3)
●   Vio「俺はテキストエディタをやめるぞ!! マック
    スー! 俺はテキストエディタを超越する! Vim
    plugin でだァーッ!」
●   お前は今まで書いた Vim script の行数を覚えて
    いるのか?
●   「我が名は暗黒美夢王(ダークビムマスター)、闇の
    エディタに焼かれて消えろ!」
まとめ
●   みなさんも、こうならないように節度を持って Vim
    を使いましょう
●   もし、運悪く美夢二病にかかってしまったらぜひ私
    に教えてください
      –   友達になりたがっている Vimmer がいます
●   最近では、Emacs 使いに美夢二病と同じ症状が見
    られる可能性について研究しています

neobundle.vimについて+おまけ

  • 1.
  • 2.
    自己紹介(いつもの) ● 一部には有名な Vimmer です ● neocomplcache とか unite.vim とか作りました ● 去年、本を書きました(共著) ● Vimmer ですが、 Emacs 勉強会にも参加します ● ujihisa.vim と聞いてやって来ました ● 今回は歌がありません ● 今回は歌がありません ● 大事な事なので二度(ry
  • 3.
    あなたはプラグインマネージャを 使っていますか? ● プラグインが乱立する時代、様々なプラグインを使 い分けるためにプラグインマネージャは必須となり つつある ● テキストエディタでなくても、Haskell, Python, Ruby, Go など、ライブラリ用のマネージャを搭載す る例は多い ● 最近だと、 Emacs もプラグインマネージャを標準 搭載 ● Vimも負けてられない!
  • 4.
    乱立するプラグインマネージャ ● Vundle ● Vim-addon-manager ● Vimana 乱立するプラグインマネージャに ● vim-flavor 新たな光が! ● Pathogen ● neobundle.vim ● 番外: git-submodule, VimJolts ● Emacs: el-get.el, package.el, auto-install.el
  • 5.
    neobundle.vim とは? ● 既存のプラグインマネージャが気に入らなかったた め、最強を目指して開発されたプラグインマネー ジャ ● 後発なだけに、他のプラグインマネージャを研究し て開発した ● 基本的な使用方法は Vundle に類似している ● プラグインの設定は Bundle → NeoBundle とす ればそのまま使える
  • 6.
    よくある誤解 ● Q: Vundle と neobundle.vim ってほとんど同じ もの? ● A: 設定に一部互換性があるだけで、全然違います
  • 7.
    既存のプラグインに対する利点 ● Vundle との互換性 ● Subversion, Mercurial 対応 ● プラグイン検索 ● unite.vim インタフェース ● 非同期アップデート ● リビジョンロック、ブランチロック ● 遅延ロード etc...
  • 8.
    neobundle.vim の簡単な使用方法 $git clone git://github.com/Shougo/neobundle.vim.git if has('vim_starting') set runtimepath+={path to neobundle directory} neobundle.vimを 呼び出せるようにする endif call neobundle#rc(expand('~/.vim/bundle')) neobundle.vim の初期化 " My Bundles here: NeoBundle “Shougo/neobundle.vim” neobundle.vimが管理する プラグインの登録 filetype plugin indent on " required!
  • 9.
    :NeoBundle コマンド ● プラグインを neobundle.vim に登録する ● プラグインがインストールされていても、このコマン ドが .vimrc になければ読み込まれない ● Vundle の :Bundle コマンドに相当 プラグインの リポジトリアドレス を指定 NeoBundle 'Shougo/vimfiler' 引数でオプション を指定できる NeoBundle 'github:mattn/gist-vim.git' NeoBundle 'git://github.com/Shougo/unite.vim.git', {'directory' : 'unite'}
  • 10.
    :NeoBundle コマンドの引数 ● github, vim.org に存在するプラグインのアドレス は省略できる ● もちろん省略せずにフルパスを書いても良い ● リポジトリのユーザー名があれば github の Vim plugin 同じ意味 NeoBundle 'git://github.com/Shougo/unite.vim.git' NeoBundle 'Shougo/unite.vim' NeoBundle 'CSApprox' プラグイン名のみだと Vim.orgのプラグイン を表す
  • 11.
    :NeoBundleInstall, :NeoBundleUpdate コマンド ● 登録されたプラグインをインストール・アップデート するコマンド ● :NeoBundle コマンドだけではインストールされな いことに注意する ● Vundleの :BundleInstall, :BundleInstall! コマ ンドに相当 ● 引数を与えることで、指定したプラグインのみインス トール・アップデート可能 – プラグイン名はあいまい検索される NeoBundleInstall neocomplcache
  • 12.
    プラグインのアンインストール方法 ● アンインストールしたいプラグインの :NeoBundle コマンドを削除かコメントアウトする ● :NeoBundleClean コマンドを実行 ● Vundle の :BundleClean とほぼ同じ ● 引数にプラグイン名を与えれば現在読み込まれて いるプラグインも削除できる(が、危険)
  • 13.
    Vundle との互換性 ● コマンドは基本的に Bundle → NeoBundle とす れば使える ● 引数も同じだが、整理・拡張されている ● Vundle の場合、プラグイン名が Vundle なのにコ マンド名が Bundle なのでわかりにくい ● Vundle ではわかりにくかったコマンドには別名を 用意している – 例: NeoBundleInstall! → NeoBundleUpdate ● :NeoBundle コマンドの後にコメントを記述可能 NeoBundleInstall neocomplcache “ Foo, Bar
  • 14.
    git 以外のリポジトリに対応 ● Vundle は現在 git 専用だが、 neobundle は git 以外にも Subversion, Mercurial にも対応してい る ● しかも、他の VCS にも容易に対応可能な構造 ● ちなみに、Vundle でもよく要望されている NeoBundle 'http://svn.macports.org/repository/macports/ contrib/mpvim/'
  • 15.
    リビジョンロック・ブランチロック ● 引数にリビジョン番号やブランチ名を指定すること で、特定のリビジョンや特定のブランチを使用する ことができる ● インストール・アップデートするときに切り替わる ● ちなみに、Vundle でよく要望されている機能 NeoBundle 'Shougo/vimfiler', 'ver.1.50' NeoBundle 'Shougo/vimshell',{ 'rev' : '3787e5' }
  • 16.
    アップデート時の自動ビルド ● vimproc はアップデートすると再ビルドが必要だ が、それを自動化できる ● ロードしたプラグインを解放できない Windows で は残念ながら無理 NeoBundle 'Shougo/vimproc', { 'build' : { 'cygwin' : 'make -f make_cygwin.mak', 'mac' : 'make -f make_mac.mak', 'unix' : 'make -f make_unix.mak', }, }
  • 17.
    pathogen 互換機能 ● neobundle.vim は pathogen と設定の互換性は ないが、pathogen と同様、ある特定のディレクトリ からプラグインを読み込むことができる ● :NeoBundleLocal コマンドを使用する – 実はこのコマンドはシンタックスシュガー NeoBundleLocal ~/.vim/bundle
  • 18.
    依存関係の定義 ● プラグインごとに依存関係を定義できる ● 依存関係が定義されている場合、依存関係にある プラグインもインストール・アップデートされる ● すでに neobundle 内で設定されている場合は無 視される ● 依存関係を定義するには、NeoBundle コマンドの オプションに depends を指定する NeoBundle 'Shougo/vimfiler', { 'depends' : 'Shougo/unite.vim' }
  • 19.
    プラグインの遅延ロード ● 特定の状況でしか使わないプラグインを遅延ロード できる ● Vim の起動速度が早くなる ● 使わないけど、削除するのが忍びない場合にも便利 ● :NeoBundle の代わりに :NeoBundleLazy を使用 ● ロードするには :NeoBundleSource コマンド NeoBundleLazy 'RipRip/clang_complete', Autocmd FileType cpp NeoBundleSource clang_complete
  • 20.
    非同期アップデート ● neobundle.vim は vimproc を自動認識し、 vimproc がインストールされていると非同期でイン ストール・アップデートできるようになる ● 基本的に、Windows はアップデートが遅いが非同 期アップデートすることで3倍くらい早くなる ● これは一度体感して見るべき
  • 21.
    unite.vim インタフェース ● unite.vim 上でプラグインの管理やインストール・ アップデートが行える ● :Unite neobundle でプラグインの管理 ● :Unite neobundle/install でプラグインのインス トール ● :Unite neobundle/update でプラグインのアップ デート ● デモ
  • 22.
    プラグイン検索 ● unite.vim 上でプラグインの検索が行える ● :Unite neobundle/search ● 当然プラグイン名で絞り込みが可能 ● 標準で、vim.org に存在するプラグインの検索が可能 ● レシピを追加すれば他のプラグインも検索可能 ● デフォルトではプラグインの設定をヤンクする ● install アクションで直接インストールも可能 ● デモ
  • 23.
    レシピによるプラグイン定義 ● 標準で検索できるのは、vim.org に存在するプラグイ ンのみ ● el-get.el のように、外部レシピを用意して検索できる ● レシピは neobundle.vim の検索機能から参照可能 ● 標準外部レシピ(Pull request 歓迎) https://github.com/Shougo/neobundle-vim-scripts ● みんなもレシピを書いて共有しよう
  • 24.
    レシピの使い方 ● 配布されているレシピは neobundle 上で管理できる ● NeoBundle 'Shougo/neobundle-vim-scripts' と .vimrc に記述すれば OK ● 正確には、 'runtime' オプションからたどれるディレク トリにある receipes/*.json が読み込まれる ● neobundle-vim-scripts は receipes/*.json を提供 しているだけ ● つまり、オレオレレシピを作成するのも簡単! 
  • 25.
    レシピの書き方 ● receipes/*.json には :NeoBundle コマンドのオプ ション指定と同様、ディクショナリを指定する ● 指定できるキーはドキュメントを参照 :help neobundle-receipe ● レシピは neobundle.vim 以外でも使用できる(プラ グインが対応すれば) {'name' : 'unite.vim', 'path' : 'Shougo/unite.vim', 'description' : 'Ultimate interface ...', 'author' : 'Shougo', 'website':'https://github.com/Shougo/unite.vim', 'script_type' : 'plugin',}
  • 26.
    今後のneobundle.vim ● 新機能の開発はほぼ終了している ● あとはレシピの充実とメンテナンス ● そろそろ vim.org に公開? – 外国人に対して知名度が無すぎる – neocomplcache は有名なのに……
  • 27.
    まとめ ● さぁ、みなさんも neobundle.vim を使ってみよう https://github.com/Shougo/neobundle.vim ● 余談: Vim テクニックバイブルの執筆後に neobundle.vim を開発したので、Vim テクニック バイブルには neobundle.vim は載っていません ● Vundle は載っています
  • 28.
    おわり ● と思いきや…… ● ここで終わらないのが私の発表
  • 29.
    最近のアニメやラノベ ● ビム・アート・オンライン(通称:ビマーオンライン) ● テキストエディタだけど、愛さえあれば関係ないよね! ● 俺の妹は Vim script が書ける ● 美夢二病だけど恋したい ● Vim はじめました ● 俺は .vimrc が少ない ● キングビム ● エディカツ!
  • 30.
    美夢二病とは? ● Vim 使用から二年目移行で陥りやすい病気 ● 自分は Vim に選ばれた存在であり、Vim の力で 全てが解決できると思ってしまう – いわゆるエディタに関して「痛い」人(エディ痛) ● 普通はすぐに治るが、重症化すると治すのは難しい – 誰とは言いませんが……
  • 31.
    いわゆる美夢二病的発言例(1) ● くっそ、また俺の Vim が暴れだしやがった! ● ふ、Vim を使わぬものにはわからんだろう… ● くっ……これが Vim の力ってやつか ● 宗教は Vim だけで十分だぜ ● 完全に、Vimmer として覚醒している……! ● 他エディタ使いがまた近づいてきたみたいだな ● はン……Vim のことを知りたいのか ● ビムアイ(Vim 愛、Vim 眼)
  • 32.
    いわゆる美夢二病的発言例(2) ● エターナルフォースビムザード! 相手のエディタは クラッシュする ● 本当に存在(あ)ったのか……「忘却の彼方へと葬 られし黒魔術(プラグイン)が……」 ● Vim を使うと「美夢羅(ビムラ)」という魔族の人格 が現れる ● (勉強会で Vimmer を発見して)っく……美夢眼が ……共鳴している……!?
  • 33.
    いわゆる美夢二病的発言例(3) ● Vio「俺はテキストエディタをやめるぞ!! マック スー! 俺はテキストエディタを超越する! Vim plugin でだァーッ!」 ● お前は今まで書いた Vim script の行数を覚えて いるのか? ● 「我が名は暗黒美夢王(ダークビムマスター)、闇の エディタに焼かれて消えろ!」
  • 34.
    まとめ ● みなさんも、こうならないように節度を持って Vim を使いましょう ● もし、運悪く美夢二病にかかってしまったらぜひ私 に教えてください – 友達になりたがっている Vimmer がいます ● 最近では、Emacs 使いに美夢二病と同じ症状が見 られる可能性について研究しています