An introduction to neocomplete
Upcoming SlideShare
Loading in...5
×
 

An introduction to neocomplete

on

  • 7,254 views

An introduction to neocomplete by DarkVim Master(暗黒美夢王)

An introduction to neocomplete by DarkVim Master(暗黒美夢王)

Statistics

Views

Total Views
7,254
Views on SlideShare
6,726
Embed Views
528

Actions

Likes
18
Downloads
22
Comments
0

5 Embeds 528

http://blog.scimpr.com 378
https://twitter.com 129
http://yuheikagaya.hatenablog.jp 19
http://s.deeeki.com 1
https://www.chatwork.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

An introduction to neocomplete An introduction to neocomplete Presentation Transcript

  • neocomplete.vim さぁ、補完の時間だ! Let's completion time! 暗黒美夢王(Shougo)
  • 注意事項 ● ● ● このスライドには暗黒美夢王成分が大量に含まれ ます。ネタをネタと分かる人だけが聞きましょう ネタがわからない人はいますぐ避難するんだ! 「はやくしろっ!! 間にあわなくなってもしらん ぞーーっ!!」
  • 我の名は…… ● あるときは、「Vimサポーターズ」 ● またあるときは「Vimネタ職人」 ● ● またあるときは「Vimプラグイン作者」「Vimキチ○イ」 「修正しました」「鋼のメンタルを持つ男」 しかしてその実態は……
  • 「きさま!? まさか!!」 「そう、そのまさかだ!!フハ ハハハ…」
  • 自己紹介(暗黒美夢王) ● ● ● クックック……我の名は暗黒美夢王(ダークビムマス ター) とあるVimmerが前回の勉強会を経て闇の力に覚醒 した存在である 特技:闇の力でVimを拡張する => 「闇のVim」、「Vimのカオス化」 ● 対義語:「光のVim」 プラグインに頼らないVimの構築術
  • neo-completeとは? ● neo-completeとはバトルエディターズに登場するVim専 用のプラグインのことである ● 暗黒美夢王が愛用するneoシリーズのプラグインの一つ ● 機能『ネオ・コンプリート・フラッシュ』 メモリ上のコマンドを一つトラッシュに送る。このターン終了まで、 このプラグインをインストールしたテキストエディタの戦闘力は1.5 倍となる。この機能は1 ターンに一度のみ適用可能である ● バトルエディターズ第二話でSublime Text3を粉砕した 超強力なプラグインだ(暗黒美夢王調べ)
  • neocompleteとは? ● neocompleteとはneocomplcacheの後継として 開発された自動補完プラグインのことである ● neocomplcacheは現在メンテナンスのみ ● 基本的な使用方法はneocomplcacheと同一 ● ただし、オプション名が異なっている ● 一部の機能が廃止されている ● neocomplcacheよりも高速化を実現 ● 残念ながら、neocomplcacheとのsource互換性 はない(重要)
  • なぜneocompleteを作ったの か? ● autocomplpopの開発が止まり、neocomplcache は長らくライバル不在 ● しかし YouCompleteMeが登場、センセーショナル なキャッチフレーズによりneocomplcacheの立場を 脅かすことでやる気になる ※:YouCompleteMe公式サイトより抜粋
  • neocompleteを使用するには ● neocompleteはif_luaを利用しているので、if_luaが 有効になったvimが必要(7.3.885以上) ● Windows: Kaoriya版のVimを使う ● Linux: 自分でコンパイルする ● Mac: brew を使う $ brew install macvim --with-cscope --with-lua --HEAD ● 詳しくはneocompleteのドキュメントを参照 – :help neocomplete-install
  • 既存のプラグインに対する 利点 ● 高い拡張性 ● YouCompleteMeほどではないが高速 ● neocomplcacheの機能をほぼすべて持つ ● 標準で曖昧マッチ ● キャッシュ機能の改良 ● filter機能 ● Unite.vimとのインタフェース親和性 etc...
  • neocomplete の 簡単な使用方法 NeoBundle “Shougo/neocomplete.vim” let g:neocomplete#enable_at_startup = 1 neobundle.vim経由で インストールする ● neobundle.vimについては 前回の発表を参照
  • neoocmplcacheとの違い わたし、気になります! ● ● ベースはneocomplcacheなので、大きく使用方法が 違うわけではない 一番違うのはオプションの指定方法 g:neocomplcache_enable_at_startup→ g:neocomplete#enable_at_startup ● 詳しくはこちらを参照: https://github.com/Shougo/neocomplete.vim/wiki/neocom plete-migration-guide
  • neocompleteのsourceにつ いて ● sourceとはneocompleteが補完する候補の種類で ある ● sourceはユーザーが任意に追加できる ● Unite.vimのsourceとほとんど同じ意味 ● neocomplcacheとは異なり、*_complete ではない
  • 代表的なneocompleteの source ● buffer バッファ補完 ● dictionary ディクショナリ補完 ● syntax シンタックス補完 ● include インクルード補完 ● tag タグ補完 ● vim Vim script補完 ● file ファイル名補完 ● omni オムニ補完
  • 曖昧マッチ機能 ● 補完テキストの途中が抜けていても補完ができる ● 標準で有効 ● ● ● ● 例: foobar を補完する時にfbのみ入力すれば候補に出 てくる 無効にすることもできる。無効化方法はneocompleteの FAQを参照 neocomplcacheにも似た機能はあったがオプション 曖昧マッチで代用できるため、camel case completion, underbar completion機能は廃止(重要)
  • 改良されたキャッシュ ● ● ● キャッシュの読み込みが高速化している さらに、neocomplcacheの時のようにスペルミスを いつまでたっても覚えていることが(ほぼ)ない! 動的にキャッシュした文字列がバッファに存在するか どうかチェックすることにより実現
  • omni sourceとforce omni ● g:neocomplete#omni#input_patternsで指定するomni sourceはneocompleteの一部 – – filters, 選択候補の学習 – ● neocompleteの機能が全て使用可能 Vimのオムに補完のエミュレーションなので、一部の補完関数との 相性が悪い(ruby_complete, clang_complete等) g:neocomplete#force_omni_input_patternsで指定する と、neocomplete経由ではなく、直接オムニ補完を呼び出す – 全てのオムニ補完が利用可能 – neocompleteの機能は全て無効になる
  • neocomplete-filters ● unite.vimと同様にfilterという機能を用いて拡張をす ることができる ● matcher 候補のマッチに使用する ● sorter 候補をソートする ● converter 候補を変換する ● 通常はmatcher,sorter,converterの順番 ● neocomplete#custom#source({source名}, {filters})でカスタマイズ可能
  • 代表的な filters ● matcher_fuzzy 曖昧マッチ(デフォルト) ● matcher_head 先頭マッチ ● sorter_rank 選択頻度によるソート(デフォルト) ● sorter_word アルファベット順ソート ● sorter_length 候補の長さによるソート ● converter_case 候補の大文字小文字自動変換(デフォルト) ● converter_abbr 長い候補の省略(デフォルト) ● converter_delimiter デリミタの省略(デフォルト) ● converter_remove_next_keyword 補完文字列の後ろを見た 候補変換(デフォルト)
  • 他のプラグインと neocompleteの連携 ● ぶっちゃけFAQを読むべきである ● clang_completeの設定例、jedi.vimの設定例等み んな載っている ● g:neocomplete#force_omni_input_patternsを 設定しなければならないことが多い
  • neocompleteのsource作成 ● 何、neocompleteのsourceを作りたい……だと? ● sourceの作り方はドキュメントを参照(英語) :help neocomplete-create-source ● sourceはneocomplcacheの時よりもunite.vimっ ぽくなっている ● 例:gather_candidates(), filterの存在, hookの指 定方法
  • まったく、if_luaは最高だぜ! ● if_luaはif_pythonと比較するとマイナー ● neocomplete, unite.vim等のプラグインがif_luaを優遇するこ とで、少しずつ知られてきた(クックック……計画通り) ● if_luaはif_pythonよりも高速、消費メモリ量も少ない、実行時 オーバーヘッドもほぼ無い ● Vim scriptと連携することで機能の少なさをカバー – Vim scriptの知識は無駄にならない、Vim scriptたんは可愛い(真理) ● if_pythonの場合、全てをPythonで書くことになりがち ● Vim scriptを愛する暗黒美夢王はif_luaを応援しています
  • YouCompleteMeとの違い わたし、気になります! ● YouCompleteMeはif_pythonに依存 ● if_pythonだけではなく、速度が必要な部分をC++モジュールで行 うために圧倒的な速度 ● 非同期補完機能 ● C/C++/ObjCの補完に特化 ● jedi.vimやUltisnipsとの連携機能 ● C++モジュールがあるので拡張するのが難しい ● ビルドが必須なのでインストールが難しい(特にWindows環境)
  • 今後のneocomplete ● 機能の実装はほぼ終わり ● 現在はたまに出てくる問題の解決がメイン ● 良いアイディアがあれば採用されるかも知れない ● そろそろ vim.org に公開? – しかし最近忙しいからな……
  • まとめ ● ● ● ● neocompleteはneocomplcacheがランクアップ したVim plugin あのバトルエディターズでもneocompleteは活躍 している if_lua 可愛いよ if_lua もっとみんな使おう そういえば、auto-complete.elはどうしたのだろう か……(遠い目)
  • 終わり? ● ● ● 何、「今回の歌はどうしたのか」だと? クックック……用意はしているが時間の都合上、懇 親会での披露を考えている 暗黒美夢王についてもっと知りたければ、下記ブロ グで連載中の「バトルエディターズ」をチェックする ことだ(現在第三話まで公開済み) http://vinarian.blogspot.jp/
  • 質問 ● さて、我の発表に対する質問があるだろうか?