SlideShare a Scribd company logo
1 of 34
Download to read offline
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 使いに美夢二病と同じ症状が見
    られる可能性について研究しています

More Related Content

What's hot

すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりcohama
 
Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境eagletmt
 
Vim = VM
Vim = VMVim = VM
Vim = VMShougo
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacsShougo
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発Daisuke Kikuchi
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacsShougo
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?Masahiro Sano
 
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
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tinygu4
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識alwei
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係Misao X
 
Ember.js導入
Ember.js導入Ember.js導入
Ember.js導入teamcpaw
 
X window managerで遊んでみた
X window managerで遊んでみたX window managerで遊んでみた
X window managerで遊んでみたMasahiko Hashimoto
 
究極のディストリビューションUbuntu
究極のディストリビューションUbuntu究極のディストリビューションUbuntu
究極のディストリビューションUbuntuKenichi Takahashi
 
JS開発環境を晒す。
JS開発環境を晒す。JS開発環境を晒す。
JS開発環境を晒す。Eiji Kuroda
 
Flash Playerの作り方
Flash Playerの作り方Flash Playerの作り方
Flash Playerの作り方Yu Kobayashi
 
Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話yuichi kishimoto
 

What's hot (20)

すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつり
 
Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境
 
Vim = VM
Vim = VMVim = VM
Vim = VM
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
うわ…私の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)
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
 
Tdd vim
Tdd vimTdd vim
Tdd vim
 
Vimの魔術
Vimの魔術Vimの魔術
Vimの魔術
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係
 
Ember.js導入
Ember.js導入Ember.js導入
Ember.js導入
 
X window managerで遊んでみた
X window managerで遊んでみたX window managerで遊んでみた
X window managerで遊んでみた
 
究極のディストリビューションUbuntu
究極のディストリビューションUbuntu究極のディストリビューションUbuntu
究極のディストリビューションUbuntu
 
anyframeを使おう
anyframeを使おうanyframeを使おう
anyframeを使おう
 
JS開発環境を晒す。
JS開発環境を晒す。JS開発環境を晒す。
JS開発環境を晒す。
 
Flash Playerの作り方
Flash Playerの作り方Flash Playerの作り方
Flash Playerの作り方
 
Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話Php beginnerが beginner + になるための話
Php beginnerが beginner + になるための話
 

Similar to neobundle.vimについて+おまけ

griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggugkimukou_26 Kimukou
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929hiro345
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理gu4
 
秋のVim祭り Rubyを添えて
秋のVim祭り Rubyを添えて秋のVim祭り Rubyを添えて
秋のVim祭り Rubyを添えてYuta Ogura
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成shigeki_ohtsu
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集Wataru NOGUCHI
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeomantomo_masakura
 
Idea+groovy on ubuntu
Idea+groovy on ubuntuIdea+groovy on ubuntu
Idea+groovy on ubuntukyon mm
 
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみようMojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみようcharsbar
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATETomofumi Yagi
 
App widgetでテザリング
App widgetでテザリングApp widgetでテザリング
App widgetでテザリングEiichi Tsuru
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfesTakeshi Komiya
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門Muyuu Fujita
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondTaisuke Yamada
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Hiro Yoshioka
 

Similar to neobundle.vimについて+おまけ (20)

griffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jgguggriffon plugin を 実際に作ってみよう #jggug
griffon plugin を 実際に作ってみよう #jggug
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
 
秋のVim祭り Rubyを添えて
秋のVim祭り Rubyを添えて秋のVim祭り Rubyを添えて
秋のVim祭り Rubyを添えて
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
Grunt入門
Grunt入門Grunt入門
Grunt入門
 
FreeBSD Desktop
FreeBSD DesktopFreeBSD Desktop
FreeBSD Desktop
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
 
Idea+groovy on ubuntu
Idea+groovy on ubuntuIdea+groovy on ubuntu
Idea+groovy on ubuntu
 
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみようMojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみよう
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
 
App widgetでテザリング
App widgetでテザリングApp widgetでテザリング
App widgetでテザリング
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
Word bench7月号
Word bench7月号Word bench7月号
Word bench7月号
 
Vue
VueVue
Vue
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
ノンプログラマのGit入門
ノンプログラマのGit入門ノンプログラマのGit入門
ノンプログラマのGit入門
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011
 

More from Shougo

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019Shougo
 
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 2017Shougo
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタShougo
 
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 neovimShougo
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovimShougo
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocompleteShougo
 

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

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Recently uploaded (8)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

neobundle.vimについて+おまけ

  • 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 使いに美夢二病と同じ症状が見 られる可能性について研究しています