SlideShare a Scribd company logo
1 of 27
Download to read offline
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

More from Shougo

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019Shougo
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタShougo
 
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 neovimShougo
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovimShougo
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacsShougo
 
Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境Shougo
 
Unite vim
Unite vim Unite vim
Unite vim Shougo
 
Vim = VM
Vim = VMVim = VM
Vim = VMShougo
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environmentShougo
 
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 vimShougo
 

More from Shougo (10)

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
 
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から見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
 
Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境
 
Unite vim
Unite vim Unite vim
Unite vim
 
Vim = VM
Vim = VMVim = VM
Vim = VM
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
 
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
 

Recently uploaded

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (8)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

An introduction to neocomplete