unite vim
DESCRIPTION
現在私が開発中のunite.vimに関する紹介です。オマケとして、今までの発表をダイジェスト形式で御届けしています。TRANSCRIPT
![Page 1: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/1.jpg)
1
unite.vim
Shougo
ゆないと!
ーすべてを破壊し、すべてを繋げー
![Page 2: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/2.jpg)
2
自己紹介
ハンドルネーム:Shougo
Vim大好き
他の勉強会によく出没します
知っている人は知っている
Lingrによくいます
毎日Vim Scriptを書いています
戦闘力:数万
![Page 3: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/3.jpg)
3
今までの(勉強会での)あらすじ
![Page 4: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/4.jpg)
4
伝説のVim=VM
![Page 5: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/5.jpg)
5
その内容
![Page 6: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/6.jpg)
6
その結果
ごらんの有様だよ!
![Page 7: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/7.jpg)
7
そして迎えたx86勉強会
![Page 8: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/8.jpg)
8
その内容
注:イメージです
![Page 9: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/9.jpg)
9
深まる誤解
またしても、ごらんの有様だよ!
![Page 10: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/10.jpg)
10
lingrでのやりとりも……
![Page 11: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/11.jpg)
11
変態じゃないよ!
「ボクはただ、Vim Scriptを書いていると何か興奮することに気付いただけなんだ。変態じゃないよ。仮に変態だとしても、変態という名の紳士だよ!」
![Page 12: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/12.jpg)
12
今日はunite.vimの紹介をします
![Page 13: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/13.jpg)
13
名前の由来
今までのインタフェースを「破壊」し、新たなインタフェースの元にすべてを「統一」する
ちなみに、某「仮面ライダー」とは何の関係もありません
おのれunite、貴様のせいでこのVimの世界も破壊されてしまった!
![Page 14: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/14.jpg)
14
unite.vimとは?
Vim Scriptで実装されたanythingプラグイン
似たようなプラグインとして、ku.vimやfuzzyfinder.vim等がある
が、設計思想はかなり異なる
いつの日か、すべてを統一するプラグインになる(予定)
http://github.com/Shougo/unite.vim
![Page 15: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/15.jpg)
15
unite.vimを作った理由
自分はVim信者なので、anything.elがVimにも欲しかった
しかし、fuzzyfinder.vim, ku.vimともに開発がストップする
sourceを統合できるku.vim Ver.0.3を元に、neouiを開発スタート
だが、ku.vimの中身はよく分からない
その上にInsert mode補完の限界が見えてくる
もう0から自作してしまおう!
![Page 16: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/16.jpg)
16
anything.elの紹介
anything.elとは、「候補を選択しアクションを実行する」という操作を汎用的に実行するプラグイン
イメージとしてはファイラーに近いが、操作するものはファイルに限定されない
候補を収集する「source」と呼ばれるものを追加することで、何でもanything化することができる
もっと詳しい解説は、
会場にいるEmacs使いに聞こう!
![Page 17: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/17.jpg)
17
anything.elの使用例
このように、「バッファ」「ファイル」「最近使用したファイル」を統合し、一度に検索することができる。
![Page 18: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/18.jpg)
18
簡単な使い方
~/.vimにunite.vimの配布ファイルをインストールする
Vimを立ち上げる
:Unite buffer file file_mruを実行する
普通に使うときは専用のキーマッピングを定義する
もっと詳しい解説は:help uniteで
![Page 19: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/19.jpg)
19
unite.vimの優位性
Insert mode / Normal modeのどちらでも使える
よりVimとの親和性の高いanythingを実現
開発が盛ん
比較的簡単にsourceを追加可能
候補をマークしてアクションの実行ができる
ワイルドカードの実装
スペース区切りによる絞り込み
![Page 20: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/20.jpg)
20
注意!
これからはunite.vimの思想や内部構造についての話をします
しかし、unite.vimはまだ開発中なので、これらの機能は実装されていない可能性があります
実装されていなくても泣かない
unite.vimを使うときは、部屋を明るくしてモニターから30cmほど離れてください
![Page 21: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/21.jpg)
21
unite.vimの設計思想
Insert modeに入って絞り込み、Normal modeで実行やactionの選択を行う
ku.vim, fuzzyfinder.vimのように、Vim組み込みの補完リストは使用しない
action, sourceは自由に追加・カスタマイズが可能
sourceにはパラメータを渡せないので、:FufFile pathみたいなことはできない
曖昧マッチはできない。パフォーマンスの影響があるため。
sortはsourceを指定した順番で行われる。同一sourceの順序づけはsource内で行う。この仕様はanything.elと同一。
ワイルドカードはあるが、正規表現で検索はしない。メタキャラクタによるマッチは邪魔である。
![Page 22: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/22.jpg)
22
kind
buffer, file, directoryのように、候補の型による共通の操作をまとめたもの
標準のもの以外にも、ユーザーやsourceで自由に追加可能
kindがそれぞれのactionを定義している(source側で上書きも可能)
ku.vimではsouceがkindを持っているが、unite.vimではkindを持つのは候補(candidates)側である
ディレクトリだったら絞り込み、といった設定が容易にできる
ちなみに、anything.elではtypeと呼ぶ
kindはku.vimの用語
![Page 23: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/23.jpg)
23
source
anything.elでは情報源とも呼ぶ
候補(candidates)をいろいろなところから収集するルーチンのこと
sourceがなければunite.vimはゴミ
現在はbuffer, file, file_mru, register, bookmarkが実装されているが、ユーザーも自由にsourceを追加できる
bufferはバッファリストからバッファの候補を収集する
fileはglob()を使ってファイルの候補を収集する
file_mruはautocmdを使って開いたファイルを記録し、候補とする
registerはレジスタの値を候補とする
bookmarkはブックマークしたファイル・ディレクトリを候補とする
![Page 24: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/24.jpg)
24
action
選択した候補に対して行う操作のこと
<Enter>を押したときにはデフォルトのactionが実行される
<Tab>を押すと、そのほかのアクションも実行できる
複数選択可能にしたり、実行後すぐ終了したりといったフラグを持たせることができる
例えば、openやdeleteといったactionは複数選択可能になっている
![Page 25: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/25.jpg)
25
ちなみに……
ku.vimにあったkey_tableは存在しない
アクションの選択では先頭マッチによる省略と補完ができる
例:openならばoと省略ができる。
ただし、他にoで始まる候補がない場合のみ。
当初はNormal modeを主力とする予定だったが、ku.vim, fuzzyfinder.vimに慣れていたユーザーの意見により、Insert modeでもそれなりの処理ができるようになった
![Page 26: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/26.jpg)
26
ちなみに……
Normal modeが主軸なので、キーマッピングは自由自在
候補のマークなど、vimfilerの影響もかなり受けている
ぶっちゃけると、いつかanything.elすら越えて、独自の進化をしたい
参考:vimfiler
![Page 27: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/27.jpg)
27
今後のunite.vim
そろそろsourceの仕様を固める
ユーザーがカスタマイズ可能にする
ヘルプの更なる充実
neocomplcacheの補完もunite.vimに統合
helpやタグから検索してジャンプ
fuzzyfinder.vimの機能の取り込み
![Page 28: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/28.jpg)
28
まとめ
anythingインタフェースはもはやEmacsユーザーの専売特許ではありません!
みなさんもunite.vimを活用して、快適な生活を送りましょう
![Page 29: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/29.jpg)
29
おまけ
anything.elを勉強するには、「Emacsテクニックバイブル」がおすすめ!
この本を読んで、Vimの戦闘力を向上させましょう
![Page 30: Unite vim](https://reader033.vdocuments.site/reader033/viewer/2022050906/5561550cd8b42aa20d8b523d/html5/thumbnails/30.jpg)
30
ご静聴ありがとうございました
僕もまた―――
Vimというエディタに踊らされただけの
犠牲者の一人に過ぎないってことさ―――