logo

アルパカログ

ddu.vim 設定例の紹介

先日 ddu.vim の正式バージョンがリリースされました。

ddu.vim は denite.nvim の後継にあたる Vim プラグインで、denite.nvim よりも自由度の高いファジーファインダーとして使うことができます。

このエントリでは ddu.vim の設定例を紹介します。

ℹ️
ddu.vim について詳細は作者のエントリをご覧ください
ddu.vim 本体と各種プラグインのインストール

ddu.vim では UI やソース、フィルターなどを自分で選んでインストールします。

私が使っているプラグインは下記です。

Plug 'Shougo/ddu.vim'
Plug 'Shougo/ddu-ui-ff'
Plug 'Shougo/ddu-source-file_rec'
Plug 'shun/ddu-source-rg'
Plug 'Shougo/ddu-filter-matcher_substring'
Plug 'Shougo/ddu-kind-file'
使用しているプラグイン(vim-plug)
ddu.vim の設定例

下記が私の設定です。

patch_global() でグローバルなデフォルト設定を、 patch_local()name ごとの設定ができます。

call ddu#custom#patch_global({
\   'ui': 'ff',
\   'sources': [
\     {
\       'name': 'file_rec',
\       'params': {
\         'ignoredDirectories': ['.git', 'node_modules', 'vendor', '.next']
\       }
\     }
\   ],
\   'sourceOptions': {
\     '_': {
\       'matchers': ['matcher_substring'],
\     },
\   },
\   'filterParams': {
\     'matcher_substring': {
\       'highlightMatched': 'Title',
\     },
\   },
\   'kindOptions': {
\     'file': {
\       'defaultAction': 'open',
\     },
\   },
\   'uiParams': {
\     'ff': {
\       'startFilter': v:true,
\       'prompt': '> ',
\       'split': 'floating',
\     }
\   },
\ })

call ddu#custom#patch_local('grep', {
\   'sourceParams' : {
\     'rg' : {
\       'args': ['--column', '--no-heading', '--color', 'never'],
\     },
\   },
\   'uiParams': {
\     'ff': {
\       'startFilter': v:false,
\     }
\   },
\ })


autocmd FileType ddu-ff call s:ddu_my_settings()
function! s:ddu_my_settings() abort
  nnoremap <buffer><silent> <CR>
    \ <Cmd>call ddu#ui#ff#do_action('itemAction', {'name': 'open', 'params': {'command': 'vsplit'}})<CR>

  nnoremap <buffer><silent> <Space>
    \ <Cmd>call ddu#ui#ff#do_action('itemAction', {'name': 'open', 'params': {'command': 'split'}})<CR>

  nnoremap <buffer><silent> a
    \ <Cmd>call ddu#ui#ff#do_action('openFilterWindow')<CR>

  nnoremap <buffer><silent> p
    \ <Cmd>call ddu#ui#ff#do_action('preview')<CR>

  nnoremap <buffer><silent> <Esc>
    \ <Cmd>call ddu#ui#ff#do_action('quit')<CR>
endfunction

autocmd FileType ddu-ff-filter call s:ddu_filter_my_settings()
function! s:ddu_filter_my_settings() abort
  inoremap <buffer><silent> <CR>
    \ <Esc><Cmd>close<CR>

  inoremap <buffer><silent> <Esc>
    \ <Esc><Cmd>close<CR>

  nnoremap <buffer><silent> <CR>
    \ <Cmd>close<CR>

  nnoremap <buffer><silent> <Esc>
    \ <Cmd>close<CR>
endfunction

nmap <silent> ;f <Cmd>call ddu#start({})<CR>
nmap <silent> ;g <Cmd>call ddu#start({
\   'name': 'grep',
\   'sources':[
\     {'name': 'rg', 'params': {'input': expand('<cword>')}}
\   ],
\ })<CR>
ddu.vim の設定例

キーマッピングは NeoVim ファイル検索もgrepもサクサクdenite.nvimの設定と使い方 で紹介した denite.nvim の設定を踏襲し ;f でファイル検索開始、 ;g でカーソル上のワードで grep となっています。

他にもおすすめのプラグインや設定があったらぜひ教えてください。

以上です。このエントリでは ddu.vim の設定例を紹介しました。