SlideShare a Scribd company logo
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/
質問
●

さて、我の発表に対する質問があるだろうか?

More Related Content

Similar to An introduction to neocomplete (14)

ODP
Ultimate completion environment with neocomplcache in vim
Shougo
 
PDF
Shougoの開発環境
Shougo
 
PDF
Vimはこわくない
Yuichi Watanabe
 
PPT
080720 Vim M
Takuya Hashimoto
 
PDF
rucs_vim LT
Naoya Inada
 
PPTX
kyoto vim#1
Yoshihiro Ura
 
PDF
速習Vim
Yu Takabatake
 
PDF
Vim の話
cohama
 
PDF
(初心者向け) Vim の機能紹介@nagoya.vim #1
cohama
 
PDF
「Vim初心者によるVim入門@haman29」
Kyohei Hamada
 
PDF
Unite vim
Shougo
 
PDF
Vim入門 20130210
marony
 
PDF
Tdd vim
Tak Nishikori
 
PPTX
秋のVim祭り Rubyを添えて
Yuta Ogura
 
Ultimate completion environment with neocomplcache in vim
Shougo
 
Shougoの開発環境
Shougo
 
Vimはこわくない
Yuichi Watanabe
 
080720 Vim M
Takuya Hashimoto
 
rucs_vim LT
Naoya Inada
 
kyoto vim#1
Yoshihiro Ura
 
速習Vim
Yu Takabatake
 
Vim の話
cohama
 
(初心者向け) Vim の機能紹介@nagoya.vim #1
cohama
 
「Vim初心者によるVim入門@haman29」
Kyohei Hamada
 
Unite vim
Shougo
 
Vim入門 20130210
marony
 
Tdd vim
Tak Nishikori
 
秋のVim祭り Rubyを添えて
Yuta Ogura
 

More from Shougo (7)

PDF
Vim conf2019
Shougo
 
ODP
カードゲームで学ぶテキストエディタ
Shougo
 
PDF
deoplete: The dark powered auto completion plugin for neovim
Shougo
 
PDF
Let's talk about neovim
Shougo
 
PDF
Vimから見たemacs
Shougo
 
PDF
Vim = VM
Shougo
 
ODP
modern X86 environment
Shougo
 
Vim conf2019
Shougo
 
カードゲームで学ぶテキストエディタ
Shougo
 
deoplete: The dark powered auto completion plugin for neovim
Shougo
 
Let's talk about neovim
Shougo
 
Vimから見たemacs
Shougo
 
Vim = VM
Shougo
 
modern X86 environment
Shougo
 
Ad

Recently uploaded (8)

PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
Ad

An introduction to neocomplete