neobundle.vim プログラマー達よ これがテキストエディタだ
May 28, 2015
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}
endif
call neobundle#rc(expand('~/.vim/bundle'))
" My Bundles here:
NeoBundle “Shougo/neobundle.vim”
filetype plugin indent on " required!
neobundle.vimを呼び出せるようにする
neobundle.vimの初期化
neobundle.vimが管理するプラグインの登録
: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 使いに美夢二病と同じ症状が見られる可能性について研究しています