SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
ゆないと!

  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

Weitere ähnliche Inhalte

Was ist angesagt?

エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
Yuya Yamaki
 

Was ist angesagt? (20)

async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
 
xv6のコンテキストスイッチを読む
xv6のコンテキストスイッチを読むxv6のコンテキストスイッチを読む
xv6のコンテキストスイッチを読む
 
Fbx解説 (1 構文編) (1)
Fbx解説 (1  構文編) (1)Fbx解説 (1  構文編) (1)
Fbx解説 (1 構文編) (1)
 
脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask
 
12 分くらいで知るLuaVM
12 分くらいで知るLuaVM12 分くらいで知るLuaVM
12 分くらいで知るLuaVM
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダ
 
超簡単! Bitnami RedmineをWindowsにインストール
超簡単! Bitnami RedmineをWindowsにインストール超簡単! Bitnami RedmineをWindowsにインストール
超簡単! Bitnami RedmineをWindowsにインストール
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
4bit-CPU : TD4の解説
4bit-CPU : TD4の解説4bit-CPU : TD4の解説
4bit-CPU : TD4の解説
 
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
【続編】その ionice、ほんとに効いてますか?
【続編】その ionice、ほんとに効いてますか?【続編】その ionice、ほんとに効いてますか?
【続編】その ionice、ほんとに効いてますか?
 
Qt creatorでremote_debug
Qt creatorでremote_debugQt creatorでremote_debug
Qt creatorでremote_debug
 
[UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい![UE4]自動テストでもっと楽したい!
[UE4]自動テストでもっと楽したい!
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
 
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
 
UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動UEFIによるELFバイナリの起動
UEFIによるELFバイナリの起動
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
 

Andere mochten auch

Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
Shougo
 
Vim = VM
Vim = VMVim = VM
Vim = VM
Shougo
 
Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014Auto closing parenthesis @vim conf2014
Auto closing parenthesis @vim conf2014
cohama
 
関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント関西ライフハック研究会×アイデアプラント
関西ライフハック研究会×アイデアプラント
Rikie Ishii
 
Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明Software Foundation:形式的証明と非形式的証明
Software Foundation:形式的証明と非形式的証明
T T
 

Andere mochten auch (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
 

Ähnlich wie 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 でも使ってみようか
 

Kürzlich hochgeladen

Kürzlich hochgeladen (12)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

Unite vim