denite でナイト - denite.nvim from unite.vim

とうとうやってやってしまったよ。

思い切って、んなタイトルつけてみたけど。*1...そんな自分が辛い

とゆことで、*2

待ってましたっ!

先日のエントリでも軽く触れましたが、今回のアップデートで Non-native フルスクリーン時の transparency オプションの問題が解決された模様。
これは嬉しい。

これを以てやっとこさ Non-native フルスクリーンまわりの問題は解決したわけで、やあめでたしめでたし、なのですが。

一方で同時に、それは...

これを以てもはや Neovim 移行の動因を失った、と言う。

Neovim 移行の検討キッカケで denite についても手を出し始め、あーでもないこーでもないとモタモタしていたら、すべて終わっていた、と。

なにやってんの? まだやってんの? もー Vim でいーじゃん、ってな状態に orz

実に滑稽。 呆れます。 自分に。

進むべき道どころか方向すら失った今、自己防衛機構バンザイな完全適応障害の一人集団心理状態で(笑、denite.nvim についての痛メモを残しておこうと思います。

結論から言ってしまいますと...

Neovim 使うなら denite.nvim 使うの決めた

unite.vim で施していた設定は、ほぼ denite.nvim へそのまんま持って行けるようでひと安心。

勿論幾つか無くなったものはあるようですが、個人的に「コレないと困るな」的な要件は満たしてくれましたので “移行する” で決まり。

設定は、こんな感じにしました。

ちなみに、unite.vim の方の設定は、ホント意味も良く理解しないまま、ただただ都合良く切り貼りしただけのもので今改めてみると、「あーわかってねーなこいつ」な感じを醸し出していたりします(笑、...が、自戒の意を込め罰として晒します。;

オカシイ、間違っているトコ等ありましたら、是非をば。;

1 " 1 "
2 " >unite 2 " >denite
3 " 3 "
4 4
5 " 変数 4 ------------------------------------------------------------
6 let g:unite_source_history_yank_enable = 1 4 ------------------------------------------------------------
7 let g:unite_enable_start_insert = 1 4 ------------------------------------------------------------
8 let g:unite_enable_ignore_case = 1 4 ------------------------------------------------------------
9 let g:unite_enable_smart_case = 1 4 ------------------------------------------------------------
10 let g:neomru#follow_links = 1 4 ------------------------------------------------------------
11 4 ------------------------------------------------------------
12 " キーマッピング 5 " キーマッピング
13 " キーマッピング.プリフィクス 6 " キーマッピング.プリフィクス
14 noremap [Unite] <Nop> 7 noremap [Denite] <Nop>
15 nmap <Leader>f [Unite] 8 nmap <Leader>f [Denite]
16 9
17 " キーマッピング.mru 10 " キーマッピング.mru
18 noremap [Unite]r :<C-u>Unite file_mru<CR> 11 nnoremap [Denite]r :<C-u>Denite file_mru<CR>
19 " キーマッピング.buffer 12 " キーマッピング.buffer
20 noremap [Unite]b :<C-u>Unite buffer<CR> 13 nnoremap [Denite]b :<C-u>Denite buffer<CR>
21 " キーマッピング.file 14 " キーマッピング.file
22 noremap [Unite]f :<C-u>UniteWithBufferDir 15 nnoremap [Denite]f :<C-u>DeniteBufferDir file_rec<CR>
23         \ -buffer-name=files file<CR> 16 " キーマッピングgrep
24 " キーマッピング.bookmark 17 nnoremap [Denite]g :<C-u>DeniteBufferDir grep<CR>
25 noremap [Unite]m :<C-u>Unite bookmark<CR> 18
26 nnoremap [unite]a :<C-u>UniteBookmarkAdd<CR> 19 " キーマッピング.help
27 " キーマッピング.register 20 nnoremap [Denite]h :<C-u>Denite help<CR>
28 noremap [Unite]g :<C-u>Unite 21 " キーマッピング.line
29         \ -buffer-name=register register<CR> 22 nnoremap [Denite]i :<C-u>Denite line<CR>
30 " キーマッピング.mapping 23
31 nnoremap [Unite]p :<C-u>Unite mapping<CR> 23 ------------------------------------------------------------
32 " キーマッピング.message 23 ------------------------------------------------------------
33 nnoremap [Unite]i :<C-u>Unite output:message<CR> 23 ------------------------------------------------------------
34 " キーマッピング.yank 23 ------------------------------------------------------------
35 nnoremap [Unite]y :<C-u>Unite history/yank<CR> 23 ------------------------------------------------------------
36 24
37 " キーマッピング.開いている間 25 " キーマッピング.開いている間
38 " ref. http://www.karakaram.com/unite 25 ------------------------------------------------------------
39 autocmd FileType unite call s:unite_settings() 25 ------------------------------------------------------------
40 function! s:unite_settings() 25 ------------------------------------------------------------
41 " ウィンドウを分割して開く 26 " ウィンドウを分割して開く
42   nnoremap <silent> <buffer> <expr> 27 call denite#custom#map('_', "<C-h>",
43           \ <C-h> unite#do_action('split') 28         \ '<denite:do_action:split>')
44   inoremap <silent> <buffer> <expr> 29 call denite#custom#map('insert', "<C-h>",
45           \ <C-h> unite#do_action('split') 30         \ '<denite:do_action:split>')
46 " ウィンドウを縦に分割して開く 31 " ウィンドウを縦に分割して開く
47   nnoremap <silent> <buffer> <expr> 32 call denite#custom#map('_', "<C-v>",
48           \ <C-v> unite#do_action('vsplit') 33         \ '<denite:do_action:vsplit>')
49   inoremap <silent> <buffer> <expr> 34 call denite#custom#map('insert',
50           \ <C-v> unite#do_action('vsplit') 35         \ "<C-v>", '<denite:do_action:vsplit>')
51 " インサート→ノーマルモード 36 " インサート→ノーマルモード
52   imap <buffer> jj <Plug>(unite_insert_leave) 37 call denite#custom#map('insert',
53 endfunction 38         \ "jj", '<denite:enter_mode:normal>')
53 ------------------------------------------------------------ 39
53 ------------------------------------------------------------ 40 " コマンド
53 ------------------------------------------------------------ 41 if executable('rg')
53 ------------------------------------------------------------ 42 " コマンド.file_rec で使うコマンド
53 ------------------------------------------------------------ 43   call denite#custom#var('file_rec', 'command',
53 ------------------------------------------------------------ 44           \ ['rg', '--files', '--glob', '!.git'])
53 ------------------------------------------------------------ 45 " コマンド.grep で使うコマンド
53 ------------------------------------------------------------ 46   call denite#custom#var('grep', 'command', ['rg'])
53 ------------------------------------------------------------ 47   call denite#custom#var('grep', 'recursive_opts', )
53 ------------------------------------------------------------ 48   call denite#custom#var('grep', 'final_opts', )
53 ------------------------------------------------------------ 49   call denite#custom#var('grep', 'separator', ['--'])
53 ------------------------------------------------------------ 50   call denite#custom#var('grep', 'default_opts',
53 ------------------------------------------------------------ 51           \ ['--vimgrep', '--no-heading'])
53 ------------------------------------------------------------ 52 else
53 ------------------------------------------------------------ 53 " コマンド.file_rec で使うコマンド
53 ------------------------------------------------------------ 54   call denite#custom#var('file_rec', 'command',
53 ------------------------------------------------------------ 55     \ ['ag', '--follow', '--nocolor', '--nogroup', '-g', ''])
53 ------------------------------------------------------------ 56 endif
54 57
Code syntax highlighting by VIM captured with ScreenShot script

キッカケ: 「denite.nvim でも、今まで (つまり unite.vim で) の感じで、どこまでイケる?」

当環境においても unite.vim を導入させて頂いておりまして、その unite を呼び出すキーマップと言うのは、ほぼ “習慣” と言ってしまって良い程、浸みついたものとなっていたりします。

denite.nvim に行っても、そんな習慣をなるだけ、いや、出来るのなら全く変えることなく振舞えるようなものであって欲しいと願うわけです。

例え慣れるまでアタフタするのが最初だけであろうとも。

と言うことで、denite.vim への移行にあたって、unite.vim での習慣や癖をどこまでそのまま持って行けるか、を確かめておきたいと思いました。

そしてその障壁の程度を、導入の判断基準にしようかなと考えたわけです。

denite.nvim のために他にやったこと

pip3 install neovim した

:h denite-install に記載あり。;

You can enable Python3 interface with pip:

sudo pip3 install neovim

移行したばっかりだと mru が出てこないので、neomru.vim 入れ直した

これは自分だけかもしれません。

何度やっても表示されないので、一旦削除してみる。

で期待通りの動作をしてくれるようになりました。

Q: How to remove the disabled plugins?

A: You can remove them like below.
Note: You need Vim 7.4.1107+ or latest version of neovim.

call map(dein#check_clean(), “delete(v:val, ‘rf’)”)

実はこれ、後で知りました。あは。

さらにこういうのもあるらしく。;

call dein#reinstall({plugin name})

自分はこんなこと露知らず、rm 担いでディレクトリまで行きましたよ...

ripgrep っての入れた

grep を ag にしたいな、と思って設定してみたのですが、どうしてか上手く動作せず息苦しくなって、denite.nvim のヘルプにある設定例 :h denite-examples を見ていて思った。

“ Ripgrep command on grep source

Ripgrep ?

速いらしいよ。

インストール

$ brew install ripgrep

やっぱ homebrew すてき。

他にも色々やったような気もするけど...

結局、よく分かんなくて放ったこと

やはり grepag を充てるのどうしても上手く行かなかったこと。何が悪いのだろう、わかんない。
ag.vim は問題ないんだけどな。

Vim 8 で denite 呼び出すと、落ちてしまうこと。これは自分だけかもしれない。別途時間とって設定を見直そうと思う。
Neovim では勿論、問題ない。

というところで、はい、おしまい。

*1:こんなブログ見てる人いないだろうから、な前提で投下したけど、後で絶対後悔するんだろうな、自分(笑。数日後タイトルを変える自分が見える...

*2:何が、とゆことで、なのか