SlideShare a Scribd company logo
1 of 30
Download to read offline
ゆないと!

  unite.vim
ーすべてを破壊し、すべてを繋げー

              Shougo   1
自己紹介

ハンドルネーム:Shougo
Vim大好き
他の勉強会によく出没します
知っている人は知っている
Lingrによくいます
毎日Vim Scriptを書いています
戦闘力:数万

                             2
今までの(勉強会での)
あらすじ

              3
伝説のVim=VM




        4
その内容




   5
その結果


ごらんの有様だよ!




               6
そして迎えたx86勉強会




           7
その内容




注:イメージです
              8
深まる誤解

またしても、ごらんの有様だよ!




                  9
lingrでのやりとりも……




             10
変態じゃないよ!


「ボクはただ、Vim Scriptを書いていると何か興
奮することに気付いただけなんだ。変態じゃない
よ。仮に変態だとしても、変態という名の紳士だ
よ!」




                              11
今日はunite.vimの紹介を
します

               12
名前の由来



今までのインタフェースを「破壊」し、新たなインタ
フェースの元にすべてを「統一」する
ちなみに、某「仮面ライダー」とは何の関係もありま
せん
おのれunite、貴様のせいでこのVimの世界も破壊
されてしまった!


                           13
unite.vimとは?

Vim Scriptで実装されたanythingプラグイン
似たようなプラグインとして、ku.vimや
fuzzyfinder.vim等がある
が、設計思想はかなり異なる
いつの日か、すべてを統一するプラグインになる
(予定)
http://github.com/Shougo/unite.vim


                                     14
unite.vimを作った理由

自分はVim信者なので、anything.elがVimに
も欲しかった
しかし、fuzzyfinder.vim, ku.vimともに開発が
ストップする
sourceを統合できるku.vim Ver.0.3を元
に、neouiを開発スタート
だが、ku.vimの中身はよく分からない
その上にInsert mode補完の限界が見えてくる
もう0から自作してしまおう!
                                    15
anything.elの紹介
 anything.elとは、「候補を選択しアクションを実
      
  行する」という操作を汎用的に実行するプラグイ
 
  ン
 イメージとしてはファイラーに近いが、操作する
 ものはファイルに限定されない
 候補を収集する「source」と呼ばれるものを追
 加することで、何でもanything化することができ
 る
 もっと詳しい解説は、
 会場にいるEmacs使いに聞こう!              16
anything.elの使用例
 このように、「バッファ」「ファイル」「最近使用した
      
  ファイル」を統合し、一度に検索することができ
 
  る。




                             17
簡単な使い方
~/.vimにunite.vimの配布ファイルをインストールする
Vimを立ち上げる
:Unite buffer file file_mruを実行する
普通に使うときは専用のキーマッピングを定義する
もっと詳しい解説は:help uniteで




                                   18
unite.vimの優位性

Insert mode / Normal modeのどちらでも使える
よりVimとの親和性の高いanythingを実現
開発が盛ん
比較的簡単にsourceを追加可能
候補をマークしてアクションの実行ができる
ワイルドカードの実装
スペース区切りによる絞り込み

                                 19
注意!
これからはunite.vimの思想や内部構造について
の話をします
しかし、unite.vimはまだ開発中なので、これらの機
能は実装されていない可能性があります
実装されていなくても泣かない
unite.vimを使うときは、部屋を明るくしてモニター
から30cmほど離れてください



                             20
unite.vimの設計思想

Insert modeに入って絞り込み、Normal modeで実行やactionの
選択を行う
ku.vim, fuzzyfinder.vimのように、Vim組み込みの補完リストは使
用しない
action, sourceは自由に追加・カスタマイズが可能
sourceにはパラメータを渡せないので、:FufFile pathみたいなこと
はできない
曖昧マッチはできない。パフォーマンスの影響があるため。
sortはsourceを指定した順番で行われる。同一sourceの順序づけ
はsource内で行う。この仕様はanything.elと同一。
ワイルドカードはあるが、正規表現で検索はしない。メタキャラクタに
よるマッチは邪魔である。
                                          21
kind

buffer, file, directoryのように、候補の型による共通の操作をまとめ
たもの
標準のもの以外にも、ユーザーやsourceで自由に追加可能
kindがそれぞれのactionを定義している(source側で上書きも可
能)
ku.vimではsouceがkindを持っているが、unite.vimではkindを持
つのは候補(candidates)側である
ディレクトリだったら絞り込み、といった設定が容易にできる
ちなみに、anything.elではtypeと呼ぶ
kindはku.vimの用語


                                          22
source

anything.elでは情報源とも呼ぶ
候補(candidates)をいろいろなところから収集するルーチンのこと
sourceがなければunite.vimはゴミ
現在はbuffer, file, file_mru, register, bookmarkが実装されてい
るが、ユーザーも自由にsourceを追加できる
bufferはバッファリストからバッファの候補を収集する
fileはglob()を使ってファイルの候補を収集する
file_mruはautocmdを使って開いたファイルを記録し、候補とする
registerはレジスタの値を候補とする
bookmarkはブックマークしたファイル・ディレクトリを候補とする
                                                  23
action

選択した候補に対して行う操作のこと
<Enter>を押したときにはデフォルトのactionが実行される
<Tab>を押すと、そのほかのアクションも実行できる
複数選択可能にしたり、実行後すぐ終了したりといったフラグを持た
せることができる
例えば、openやdeleteといったactionは複数選択可能になっている




                                     24
ちなみに……

ku.vimにあったkey_tableは存在しない
アクションの選択では先頭マッチによる省略と補完ができる
例:openならばoと省略ができる。
  ただし、他にoで始まる候補がない場合のみ。
当初はNormal modeを主力とする予定だったが、ku.vim,
fuzzyfinder.vimに慣れていたユーザーの意見により、Insert mode
でもそれなりの処理ができるようになった




                                         25
ちなみに……

Normal modeが主軸なので、キーマッピングは自由自在
候補のマークなど、vimfilerの影響もかなり受けている
ぶっちゃけると、いつかanything.elすら越えて、独自の進化をしたい




         参考:vimfiler
                                    26
今後のunite.vim

そろそろsourceの仕様を固める
ユーザーがカスタマイズ可能にする
ヘルプの更なる充実
neocomplcacheの補完もunite.vimに統合
helpやタグから検索してジャンプ
fuzzyfinder.vimの機能の取り込み



                                27
まとめ
anythingインタフェースはもはやEmacsユーザー
の専売特許ではありません!
みなさんもunite.vimを活用して、快適な生活を送り
ましょう




                           28
おまけ
anything.elを勉強するには、「Emacsテクニックバ
イブル」がおすすめ!
この本を読んで、Vimの戦闘力を向上させましょう




                              29
ご静聴ありがとうございました
僕もまた―――
Vimというエディタに踊らされただけの
犠牲者の一人に過ぎないってことさ―――




                      30

More Related Content

What's hot

はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーSaeko Yamamoto
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)parrotstudio
 
GoでシュッとWebスクレイピングする
GoでシュッとWebスクレイピングするGoでシュッとWebスクレイピングする
GoでシュッとWebスクレイピングするYuta Ohashi
 
ページャ lessを使いこなす
ページャ lessを使いこなすページャ lessを使いこなす
ページャ lessを使いこなすToshiyuki Shimono
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩Ayana Yokota
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.kiki utagawa
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門to_ueda
 
社内Git勉強会向け資料
社内Git勉強会向け資料社内Git勉強会向け資料
社内Git勉強会向け資料Hiroki Saiki
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Go Maeda
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Takuya Ueda
 
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020onozaty
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門dsuke Takaoka
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザktateish
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1cohama
 

What's hot (20)

はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
 
いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
 
GoでシュッとWebスクレイピングする
GoでシュッとWebスクレイピングするGoでシュッとWebスクレイピングする
GoでシュッとWebスクレイピングする
 
ページャ lessを使いこなす
ページャ lessを使いこなすページャ lessを使いこなす
ページャ lessを使いこなす
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 
社内Git勉強会向け資料
社内Git勉強会向け資料社内Git勉強会向け資料
社内Git勉強会向け資料
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
 
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
Oss貢献超入門
Oss貢献超入門Oss貢献超入門
Oss貢献超入門
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザ
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1
 

Viewers also liked

neovim = VM
neovim = VMneovim = VM
neovim = VMShougo
 
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
 
Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用Kenta Kase
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocompleteShougo
 
Vim = VM
Vim = VMVim = VM
Vim = VMShougo
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimShougo
 
ctagsでvimにひきこもる
ctagsでvimにひきこもるctagsでvimにひきこもる
ctagsでvimにひきこもるTakaaki Hirano
 
Vimconf2015
Vimconf2015Vimconf2015
Vimconf2015rbtnn
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編Kazuya Numata
 
軽快なPlan9
軽快なPlan9軽快なPlan9
軽快なPlan9Go Saito
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけShougo
 
Exploring the Performance Impact of Virtualization on an HPC Cloud
Exploring the Performance Impact of Virtualization on an HPC CloudExploring the Performance Impact of Virtualization on an HPC Cloud
Exploring the Performance Impact of Virtualization on an HPC CloudRyousei Takano
 
Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014cohama
 
20161026_超高層大気観測データのメタデータ作成実験経過報告
20161026_超高層大気観測データのメタデータ作成実験経過報告20161026_超高層大気観測データのメタデータ作成実験経過報告
20161026_超高層大気観測データのメタデータ作成実験経過報告Yasuyuki Minamiyama
 
関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラントRikie Ishii
 
TO LOVE IN'~人生のパートナーを見つける旅~
TO LOVE IN'~人生のパートナーを見つける旅~TO LOVE IN'~人生のパートナーを見つける旅~
TO LOVE IN'~人生のパートナーを見つける旅~Shuhei Hinoshita
 
Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明T T
 

Viewers also liked (20)

neovim = VM
neovim = VMneovim = VM
neovim = VM
 
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
 
Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用Vimとctagsでコードリーディング 公開用
Vimとctagsでコードリーディング 公開用
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
 
Vim = VM
Vim = VMVim = VM
Vim = VM
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vim
 
ctagsでvimにひきこもる
ctagsでvimにひきこもるctagsでvimにひきこもる
ctagsでvimにひきこもる
 
Vimconf2015
Vimconf2015Vimconf2015
Vimconf2015
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編
 
軽快なPlan9
軽快なPlan9軽快なPlan9
軽快なPlan9
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
Exploring the Performance Impact of Virtualization on an HPC Cloud
Exploring the Performance Impact of Virtualization on an HPC CloudExploring the Performance Impact of Virtualization on an HPC Cloud
Exploring the Performance Impact of Virtualization on an HPC Cloud
 
Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014
 
20161026_超高層大気観測データのメタデータ作成実験経過報告
20161026_超高層大気観測データのメタデータ作成実験経過報告20161026_超高層大気観測データのメタデータ作成実験経過報告
20161026_超高層大気観測データのメタデータ作成実験経過報告
 
バージョン管理入門
バージョン管理入門バージョン管理入門
バージョン管理入門
 
関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント
 
TO LOVE IN'~人生のパートナーを見つける旅~
TO LOVE IN'~人生のパートナーを見つける旅~TO LOVE IN'~人生のパートナーを見つける旅~
TO LOVE IN'~人生のパートナーを見つける旅~
 
Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明
 
X hago3
X hago3X hago3
X hago3
 

Similar to Unite vim

「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tinygu4
 
5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事gu4
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014Sugoi Kanari
 
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimt9md
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理gu4
 
GNU Make でも使ってみようか
GNU Make でも使ってみようかGNU Make でも使ってみようか
GNU Make でも使ってみようかY M
 

Similar to Unite vim (12)

「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
 
Tdd vim
Tdd vimTdd vim
Tdd vim
 
Vimはこわくない
VimはこわくないVimはこわくない
Vimはこわくない
 
rucs_vim LT
rucs_vim LTrucs_vim LT
rucs_vim LT
 
Gorilla.vim#6
Gorilla.vim#6Gorilla.vim#6
Gorilla.vim#6
 
5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事5年間Yokohama.vimをやってみて感じた事
5年間Yokohama.vimをやってみて感じた事
 
Unite with script
Unite with scriptUnite with script
Unite with script
 
anyframeを使おう
anyframeを使おうanyframeを使おう
anyframeを使おう
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
 
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vim
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
 
GNU Make でも使ってみようか
GNU Make でも使ってみようかGNU Make でも使ってみようか
GNU Make でも使ってみようか
 

Unite vim