Top Banner
1 unite.vim Shougo ゆないと! ーすべてを破壊し、すべてを繋げー
30

Unite vim

May 24, 2015

Download

Technology

Shougo

現在私が開発中のunite.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: Unite vim

1

unite.vim

Shougo

ゆないと!

ーすべてを破壊し、すべてを繋げー

Page 2: Unite vim

2

自己紹介

ハンドルネーム:Shougo

Vim大好き

他の勉強会によく出没します

知っている人は知っている

Lingrによくいます

毎日Vim Scriptを書いています

戦闘力:数万

Page 3: Unite vim

3

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

Page 4: Unite vim

4

伝説のVim=VM

Page 5: Unite vim

5

その内容

Page 6: Unite vim

6

その結果

ごらんの有様だよ!

Page 7: Unite vim

7

そして迎えたx86勉強会

Page 8: Unite vim

8

その内容

注:イメージです

Page 9: Unite vim

9

深まる誤解

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

Page 10: Unite vim

10

lingrでのやりとりも……

Page 11: Unite vim

11

変態じゃないよ!

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

Page 12: Unite vim

12

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

Page 13: Unite vim

13

名前の由来

今までのインタフェースを「破壊」し、新たなインタフェースの元にすべてを「統一」する

ちなみに、某「仮面ライダー」とは何の関係もありません

おのれunite、貴様のせいでこのVimの世界も破壊されてしまった!

Page 14: Unite vim

14

unite.vimとは?

Vim Scriptで実装されたanythingプラグイン

似たようなプラグインとして、ku.vimやfuzzyfinder.vim等がある

が、設計思想はかなり異なる

いつの日か、すべてを統一するプラグインになる(予定)

http://github.com/Shougo/unite.vim

Page 15: Unite vim

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

16

anything.elの紹介

      

 

anything.elとは、「候補を選択しアクションを実行する」という操作を汎用的に実行するプラグイン

イメージとしてはファイラーに近いが、操作するものはファイルに限定されない

候補を収集する「source」と呼ばれるものを追加することで、何でもanything化することができる

もっと詳しい解説は、

会場にいるEmacs使いに聞こう!

Page 17: Unite vim

17

anything.elの使用例

      

 

このように、「バッファ」「ファイル」「最近使用したファイル」を統合し、一度に検索することができる。

Page 18: Unite vim

18

簡単な使い方

~/.vimにunite.vimの配布ファイルをインストールする

Vimを立ち上げる

:Unite buffer file file_mruを実行する

普通に使うときは専用のキーマッピングを定義する

もっと詳しい解説は:help uniteで

Page 19: Unite vim

19

unite.vimの優位性

Insert mode / Normal modeのどちらでも使える

よりVimとの親和性の高いanythingを実現

開発が盛ん

比較的簡単にsourceを追加可能

候補をマークしてアクションの実行ができる

ワイルドカードの実装

スペース区切りによる絞り込み

Page 20: Unite vim

20

注意!

これからはunite.vimの思想や内部構造についての話をします

しかし、unite.vimはまだ開発中なので、これらの機能は実装されていない可能性があります

実装されていなくても泣かない

unite.vimを使うときは、部屋を明るくしてモニターから30cmほど離れてください

Page 21: Unite vim

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

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

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

24

action

選択した候補に対して行う操作のこと

<Enter>を押したときにはデフォルトのactionが実行される

<Tab>を押すと、そのほかのアクションも実行できる

複数選択可能にしたり、実行後すぐ終了したりといったフラグを持たせることができる

例えば、openやdeleteといったactionは複数選択可能になっている

Page 25: Unite vim

25

ちなみに……

ku.vimにあったkey_tableは存在しない

アクションの選択では先頭マッチによる省略と補完ができる

例:openならばoと省略ができる。

  ただし、他にoで始まる候補がない場合のみ。

当初はNormal modeを主力とする予定だったが、ku.vim, fuzzyfinder.vimに慣れていたユーザーの意見により、Insert modeでもそれなりの処理ができるようになった

Page 26: Unite vim

26

ちなみに……

Normal modeが主軸なので、キーマッピングは自由自在

候補のマークなど、vimfilerの影響もかなり受けている

ぶっちゃけると、いつかanything.elすら越えて、独自の進化をしたい

参考:vimfiler

Page 27: Unite vim

27

今後のunite.vim

そろそろsourceの仕様を固める

ユーザーがカスタマイズ可能にする

ヘルプの更なる充実

neocomplcacheの補完もunite.vimに統合

helpやタグから検索してジャンプ

fuzzyfinder.vimの機能の取り込み

Page 28: Unite vim

28

まとめ

anythingインタフェースはもはやEmacsユーザーの専売特許ではありません!

みなさんもunite.vimを活用して、快適な生活を送りましょう

Page 29: Unite vim

29

おまけ

anything.elを勉強するには、「Emacsテクニックバイブル」がおすすめ!

この本を読んで、Vimの戦闘力を向上させましょう

Page 30: Unite vim

30

ご静聴ありがとうございました

僕もまた―――

Vimというエディタに踊らされただけの

犠牲者の一人に過ぎないってことさ―――