Top Banner
neobundle.vim プログラマー達よ これがテキストエディタだ
34

neobundle.vimについて+おまけ

May 28, 2015

Download

Technology

Shougo

ujihisa.vimで発表したスライドです。neobundle.vimの貴重な日本語資料となります。
歌はありませんが、最後に……。
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: neobundle.vimについて+おまけ

neobundle.vim

プログラマー達よこれがテキストエディタだ

Page 2: neobundle.vimについて+おまけ

自己紹介(いつもの)

● 一部には有名な Vimmer です

● neocomplcache とか unite.vim とか作りました● 去年、本を書きました(共著)● Vimmer ですが、 Emacs 勉強会にも参加します

● ujihisa.vim と聞いてやって来ました

● 今回は歌がありません● 今回は歌がありません● 大事な事なので二度(ry

Page 3: neobundle.vimについて+おまけ

あなたはプラグインマネージャを使っていますか?

● プラグインが乱立する時代、様々なプラグインを使い分けるためにプラグインマネージャは必須となりつつある

● テキストエディタでなくても、Haskell, Python, Ruby, Go など、ライブラリ用のマネージャを搭載する例は多い

● 最近だと、 Emacs もプラグインマネージャを標準搭載

● Vimも負けてられない!

Page 4: neobundle.vimについて+おまけ

乱立するプラグインマネージャ

● Vundle● Vim-addon-manager● Vimana● vim-flavor● Pathogen● neobundle.vim● 番外: git-submodule, VimJolts● Emacs: el-get.el, package.el, auto-install.el

乱立するプラグインマネージャに新たな光が!

Page 5: neobundle.vimについて+おまけ

neobundle.vim とは?

● 既存のプラグインマネージャが気に入らなかったため、最強を目指して開発されたプラグインマネージャ

● 後発なだけに、他のプラグインマネージャを研究して開発した

● 基本的な使用方法は Vundle に類似している

● プラグインの設定は Bundle → NeoBundle とすればそのまま使える

Page 6: neobundle.vimについて+おまけ

よくある誤解

● Q: Vundle と neobundle.vim ってほとんど同じもの?

● A: 設定に一部互換性があるだけで、全然違います

Page 7: neobundle.vimについて+おまけ

既存のプラグインに対する利点

● Vundle との互換性

● Subversion, Mercurial 対応● プラグイン検索● unite.vim インタフェース● 非同期アップデート● リビジョンロック、ブランチロック● 遅延ロード

etc...

Page 8: neobundle.vimについて+おまけ

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が管理するプラグインの登録

Page 9: 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'}

引数でオプションを指定できる

プラグインのリポジトリアドレス

を指定

Page 10: neobundle.vimについて+おまけ

:NeoBundle コマンドの引数

● github, vim.org に存在するプラグインのアドレスは省略できる

● もちろん省略せずにフルパスを書いても良い● リポジトリのユーザー名があれば github の Vim

plugin

NeoBundle 'git://github.com/Shougo/unite.vim.git'NeoBundle 'Shougo/unite.vim'NeoBundle 'CSApprox'

同じ意味

プラグイン名のみだとVim.orgのプラグイン

を表す

Page 11: neobundle.vimについて+おまけ

:NeoBundleInstall ,:NeoBundleUpdate コマンド

● 登録されたプラグインをインストール・アップデートするコマンド

● :NeoBundle コマンドだけではインストールされないことに注意する

● Vundleの :BundleInstall, :BundleInstall! コマンドに相当

● 引数を与えることで、指定したプラグインのみインストール・アップデート可能

– プラグイン名はあいまい検索される

NeoBundleInstall neocomplcache

Page 12: neobundle.vimについて+おまけ

プラグインのアンインストール方法

● アンインストールしたいプラグインの :NeoBundle コマンドを削除かコメントアウトする

● :NeoBundleClean コマンドを実行

● Vundle の :BundleClean とほぼ同じ● 引数にプラグイン名を与えれば現在読み込まれて

いるプラグインも削除できる(が、危険)

Page 13: neobundle.vimについて+おまけ

Vundle との互換性

● コマンドは基本的に Bundle → NeoBundle とすれば使える

● 引数も同じだが、整理・拡張されている● Vundle の場合、プラグイン名が Vundle なのにコ

マンド名が Bundle なのでわかりにくい

● Vundle ではわかりにくかったコマンドには別名を用意している

– 例: NeoBundleInstall! → NeoBundleUpdate

● :NeoBundle コマンドの後にコメントを記述可能NeoBundleInstall neocomplcache “ Foo, Bar

Page 14: neobundle.vimについて+おまけ

git 以外のリポジトリに対応

● Vundle は現在 git 専用だが、 neobundle は git 以外にも Subversion, Mercurial にも対応している

● しかも、他の VCS にも容易に対応可能な構造

● ちなみに、Vundle でもよく要望されている

NeoBundle \'http://svn.macports.org/repository/macports/contrib/mpvim/'

Page 15: neobundle.vimについて+おまけ

リビジョンロック・ブランチロック

● 引数にリビジョン番号やブランチ名を指定することで、特定のリビジョンや特定のブランチを使用することができる

● インストール・アップデートするときに切り替わる● ちなみに、Vundle でよく要望されている機能

NeoBundle 'Shougo/vimfiler', 'ver.1.50'NeoBundle 'Shougo/vimshell',{ 'rev' : '3787e5' }

Page 16: neobundle.vimについて+おまけ

アップデート時の自動ビルド

● vimproc はアップデートすると再ビルドが必要だが、それを自動化できる

● ロードしたプラグインを解放できない Windows では残念ながら無理

NeoBundle 'Shougo/vimproc', { 'build' : { \ 'cygwin' : 'make -f make_cygwin.mak', \ 'mac' : 'make -f make_mac.mak', \ 'unix' : 'make -f make_unix.mak', \ }, \ }

Page 17: neobundle.vimについて+おまけ

pathogen 互換機能

● neobundle.vim は pathogen と設定の互換性はないが、pathogen と同様、ある特定のディレクトリからプラグインを読み込むことができる

● :NeoBundleLocal コマンドを使用する– 実はこのコマンドはシンタックスシュガー

NeoBundleLocal ~/.vim/bundle

Page 18: neobundle.vimについて+おまけ

依存関係の定義

● プラグインごとに依存関係を定義できる● 依存関係が定義されている場合、依存関係にある

プラグインもインストール・アップデートされる● すでに neobundle 内で設定されている場合は無視される

● 依存関係を定義するには、NeoBundle コマンドのオプションに depends を指定する

NeoBundle 'Shougo/vimfiler', \ { 'depends' : 'Shougo/unite.vim' }

Page 19: neobundle.vimについて+おまけ

プラグインの遅延ロード

● 特定の状況でしか使わないプラグインを遅延ロードできる

● Vim の起動速度が早くなる● 使わないけど、削除するのが忍びない場合にも便利● :NeoBundle の代わりに :NeoBundleLazy を使用

● ロードするには :NeoBundleSource コマンド

NeoBundleLazy 'RipRip/clang_complete', Autocmd FileType cpp \ NeoBundleSource clang_complete

Page 20: neobundle.vimについて+おまけ

非同期アップデート

● neobundle.vim は vimproc を自動認識し、 vimproc がインストールされていると非同期でインストール・アップデートできるようになる

● 基本的に、Windows はアップデートが遅いが非同期アップデートすることで3倍くらい早くなる

● これは一度体感して見るべき

Page 21: neobundle.vimについて+おまけ

unite.vim インタフェース

● unite.vim 上でプラグインの管理やインストール・アップデートが行える

● :Unite neobundle でプラグインの管理

● :Unite neobundle/install でプラグインのインストール

● :Unite neobundle/update でプラグインのアップデート

● デモ

Page 22: neobundle.vimについて+おまけ

プラグイン検索

● unite.vim 上でプラグインの検索が行える

● :Unite neobundle/search● 当然プラグイン名で絞り込みが可能● 標準で、vim.org に存在するプラグインの検索が可能● レシピを追加すれば他のプラグインも検索可能● デフォルトではプラグインの設定をヤンクする● install アクションで直接インストールも可能 ● デモ

Page 23: neobundle.vimについて+おまけ

レシピによるプラグイン定義

● 標準で検索できるのは、vim.org に存在するプラグインのみ

● el-get.el のように、外部レシピを用意して検索できる

● レシピは neobundle.vim の検索機能から参照可能

● 標準外部レシピ(Pull request 歓迎)

https://github.com/Shougo/neobundle-vim-scripts

● みんなもレシピを書いて共有しよう

Page 24: neobundle.vimについて+おまけ

レシピの使い方

● 配布されているレシピは neobundle 上で管理できる

● NeoBundle 'Shougo/neobundle-vim-scripts'

と .vimrc に記述すれば OK● 正確には、 'runtime' オプションからたどれるディレク

トリにある receipes/*.json が読み込まれる

● neobundle-vim-scripts は receipes/*.json を提供しているだけ

● つまり、オレオレレシピを作成するのも簡単! 

Page 25: neobundle.vimについて+おまけ

レシピの書き方● 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',}

Page 26: neobundle.vimについて+おまけ

今後のneobundle.vim

● 新機能の開発はほぼ終了している● あとはレシピの充実とメンテナンス● そろそろ vim.org に公開?

– 外国人に対して知名度が無すぎる

– neocomplcache は有名なのに……

Page 27: neobundle.vimについて+おまけ

まとめ

● さぁ、みなさんも neobundle.vim を使ってみよう

https://github.com/Shougo/neobundle.vim● 余談: Vim テクニックバイブルの執筆後に

neobundle.vim を開発したので、Vim テクニックバイブルには neobundle.vim は載っていません

● Vundle は載っています

Page 28: neobundle.vimについて+おまけ

おわり

● と思いきや……● ここで終わらないのが私の発表

Page 29: neobundle.vimについて+おまけ

最近のアニメやラノベ

● ビム・アート・オンライン(通称:ビマーオンライン)● テキストエディタだけど、愛さえあれば関係ないよね!● 俺の妹は Vim script が書ける● 美夢二病だけど恋したい● Vim はじめました

● 俺は .vimrc が少ない● キングビム● エディカツ!

Page 30: neobundle.vimについて+おまけ

美夢二病とは?

● Vim 使用から二年目移行で陥りやすい病気

● 自分は Vim に選ばれた存在であり、Vim の力で全てが解決できると思ってしまう

– いわゆるエディタに関して「痛い」人(エディ痛)

● 普通はすぐに治るが、重症化すると治すのは難しい– 誰とは言いませんが……

Page 31: neobundle.vimについて+おまけ

いわゆる美夢二病的発言例(1)

● くっそ、また俺の Vim が暴れだしやがった!

● ふ、Vim を使わぬものにはわからんだろう…

● くっ……これが Vim の力ってやつか

● 宗教は Vim だけで十分だぜ

● 完全に、Vimmer として覚醒している……!● 他エディタ使いがまた近づいてきたみたいだな● はン……Vim のことを知りたいのか

● ビムアイ(Vim 愛、Vim 眼)

Page 32: neobundle.vimについて+おまけ

いわゆる美夢二病的発言例(2)

● エターナルフォースビムザード! 相手のエディタはクラッシュする

● 本当に存在(あ)ったのか……「忘却の彼方へと葬られし黒魔術(プラグイン)が……」

● Vim を使うと「美夢羅(ビムラ)」という魔族の人格が現れる

● (勉強会で Vimmer を発見して)っく……美夢眼が……共鳴している……!?

Page 33: neobundle.vimについて+おまけ

いわゆる美夢二病的発言例(3)

● Vio「俺はテキストエディタをやめるぞ!! マックスー! 俺はテキストエディタを超越する! Vim plugin でだァーッ!」

● お前は今まで書いた Vim script の行数を覚えているのか?

● 「我が名は暗黒美夢王(ダークビムマスター)、闇のエディタに焼かれて消えろ!」

Page 34: neobundle.vimについて+おまけ

まとめ

● みなさんも、こうならないように節度を持って Vim を使いましょう

● もし、運悪く美夢二病にかかってしまったらぜひ私に教えてください

– 友達になりたがっている Vimmer がいます

● 最近では、Emacs 使いに美夢二病と同じ症状が見られる可能性について研究しています