Denite
Denite.nvim is a dark powered Neovim unite all interfaces. It resolves unite.vim problems. It is 10 times faster than unite.vim.
暗黒の力を手に入れた云々。早い
現在はuniteと比べると機能が限られているが、Shougoさんが鋭意開発中です。
Neovimでしか動作しないので、Vimを使っている方は使えません。
こんな感じ
インストール
python3を持ってないといけません。
pyenvとpyenv-virtualenvを使っている場合
pyenv install 3.5.2
pyenv virtualenv 3.5.2 neovim3
pyenv activate neovim3
pip install neovim
生のpython3を使っている方は
pip3 install neovim
とかでいいかもしれません。
ここら辺は詳しくはNeovim Wikiに懇切丁寧にかいてあるので、こちらを見てみると良いです。
python3のbinを指定してあげます。
letg:python3_host_prog = expand('~/.pyenv/versions/neovim3/bin/python')" 上に記載した方法を取っていない方は which python3 とかしてそのPATHを設定してください。
neovimを起動して:echo has('python3')で1が返ってきた場合、設定できています。
0が返ってきた場合はどっかの設定が間違っています。vim-jpの方はみなさん優しいので問い合わせましょう。
本体のインストールは使っているプラグインマネージャーによって違うかと思いますが、
[[plugins]]repo='Shougo/denite.nvim'
こんな感じです。
:UpdateRemotePlugins
をneovimないで呼び出してください。
remote/host: python3 host registered plugins ['denite', 'deoplete']
remote/host: generated rplugin manifest: /Users/okamos/.local/share/nvim/rplugin.vim
こんな感じのメッセージが出てくると思います。deniteがあれば成功しています。
操作方法
2016/09/09現在docに載っていませんのでソースコードより
letg:denite#_default_mappings._ = {
\ "\<Esc>": 'quit',
\ "\<C-g>": 'quit',
\ "\<BS>": 'delete_backward_char',
\ "\<C-h>": 'delete_backward_char',
\ "\<C-w>": 'delete_backward_word',
\ "\<C-n>": 'move_to_next_line',
\ "\<Down>": 'move_to_next_line',
\ "\<C-p>": 'move_to_prev_line',
\ "\<Up>": 'move_to_prev_line',
\ "\<C-j>": 'input_command_line',
\ "\<CR>": 'do_action',
\}
こうなっています。Vimを使っている人にとってはごく一般的な移動方法です。
機能
今の所
- Denite file_rec
- Denite file_mru (neo_mru連携)
- Denite line
の三つです。
@i_taiga1私もほしいと思ってます
— 暗黒美夢王(deoplete dev) (@ShougoMatsu) 2016年9月9日
これを見る限り、source_grepは近い将来実装されそうです。
file_rec
unite.vimであったfile_rec/asyncです。
カレントディレクトリ以下のファイルを列挙して、絞込み選択してアクション(ファイルを開く)します。
file_mru
neomru.vimのmruファイルから絞込みをかけて、アクション(ファイルを開く)します。
unite.vimより高速に動作するので、保持する最大量を上げても安心です。
line
現在開いているファイル(バッファ)内を絞込み検索してアクション(その行へジャンプ)します
私の設定
dein.vimですが
hook_add='''nmap<silent><C-u><C-u>:<C-u>Denitefile_mru<CR>nmap<silent><C-u><C-p>:<C-u>Denitefile_rec<CR>nmap<silent><C-u><C-j>:<C-u>Deniteline<CR>'''hook_post_source='''calldenite#custom#source(\'file_rec','vars',{\'command':[\'pt','--follow','--nocolor','--nogroup',\'--hidden','-g',''\]})'''
こんな感じでマッピングしています。
denite#custom#sourceはプラグイン読み込みが終わってからじゃないと動作しないので注意してください。
file_recはデフォルトはfindですがagやackなどに変えることができます。
余談
なぜかカーソルラインのfgが設定されていなかったので、最初選択行がどれなのか全くわかりませんでした。
hi CursorLine guifg=#E19972
Shougoさんへの感謝の気持ちで溺れそう。