Shougo/ddu.vim

Dark deno-powered UI framework for Vim/Neovim

320

stars

1,170

commits

TypeScript

primary language

Aug 26, 2026

updated

ddu-vim
fuzzy-finder
neovim
user-interface
vim
vim-denops
Browse cluster: Vim/Neovim IDE Extensions

README

ddu.vim

Dark deno-powered UI framework for Vim/Neovim

If you don't want to configure plugins, you don't have to use the plugin. It does not work with zero configuration. You can use other plugins.

Doc

Please read help for details.

NOTE: I have created a Japanese article for ddu.vim.

Ddu is the abbreviation of "dark deno-powered UI". It provides an extensible and asynchronous UI framework for Vim/Neovim.

The development is supported by GitHub Sponsors. Thank you!

Introduction

I have chosen the denops.vim framework to create this plugin because denops.vim is better than the Neovim Python interface.

  • Easy to set up
  • Minimal dependency
  • Stability
  • Vim/Neovim compatibility
  • Speed
  • Library
  • Easy to hack

Screenshots

Please see: https://github.com/Shougo/ddu.vim/issues/10

ddu-ui-ff

Install

NOTE: For the current version requirements, see the COMPATIBILITY section in doc/ddu.txt (:h ddu-compatibility).

Quick Start

Below is a minimal configuration to get started with ddu.vim. For detailed documentation, see doc/ddu.txt.

You will need a UI, at least one source, and a kind plugin. The example below uses the popular combination of ddu-ui-ff, ddu-source-file, ddu-kind-file, and ddu-filter-matcher_substring.

Quick Start

A minimal runtime configuration example (no plugin-manager-specific instructions):

" Example: minimal settings to configure and start ddu.
" Ensure ddu.vim and at least one UI and one source are installed beforehand.

" Set a default UI and basic kind option.
call ddu#custom#patch_global(#{
    \   ui: 'ff',
    \ })

" Set the default action for file kind
call ddu#custom#patch_global(#{
    \   kindOptions: #{
    \     file: #{
    \       defaultAction: 'open',
    \     },
    \   },
    \ })

" Use substring matcher
call ddu#custom#patch_global(#{
    \   sourceOptions: #{
    \     _: #{
    \       matchers: ['matcher_substring'],
    \     },
    \   },
    \ })

" Open ddu with the file source in the current directory
call ddu#start(#{
    \   sources: [#{ name: 'file', params: {} }],
    \ })

" Start ddu with a simple source list and optional input.
" Replace 'file' with any installed source name.
:call ddu#start({'name': 'list', 'sources': ['file']})

Notes:

  • For full documentation, read :help ddu or open doc/ddu.txt.
  • If you are unsure which UI or source to install first, see the community topic: https://github.com/topics/ddu-vim

Contributors

Shougo

1,023 commits

Milly

41 commits

Copilot

31 commits

hori-ryota

24 commits

Shougo/ddu.vim

Dark deno-powered UI framework for Vim/Neovim

320

stars

1,170

commits

TypeScript

primary language

Aug 26, 2026

updated

ddu-vim
fuzzy-finder
neovim
user-interface
vim
vim-denops
Browse cluster: Vim/Neovim IDE Extensions

README

ddu.vim

Dark deno-powered UI framework for Vim/Neovim

If you don't want to configure plugins, you don't have to use the plugin. It does not work with zero configuration. You can use other plugins.

Doc

Please read help for details.

NOTE: I have created a Japanese article for ddu.vim.

Ddu is the abbreviation of "dark deno-powered UI". It provides an extensible and asynchronous UI framework for Vim/Neovim.

The development is supported by GitHub Sponsors. Thank you!

Introduction

I have chosen the denops.vim framework to create this plugin because denops.vim is better than the Neovim Python interface.

  • Easy to set up
  • Minimal dependency
  • Stability
  • Vim/Neovim compatibility
  • Speed
  • Library
  • Easy to hack

Screenshots

Please see: https://github.com/Shougo/ddu.vim/issues/10

ddu-ui-ff

Install

NOTE: For the current version requirements, see the COMPATIBILITY section in doc/ddu.txt (:h ddu-compatibility).

Quick Start

Below is a minimal configuration to get started with ddu.vim. For detailed documentation, see doc/ddu.txt.

You will need a UI, at least one source, and a kind plugin. The example below uses the popular combination of ddu-ui-ff, ddu-source-file, ddu-kind-file, and ddu-filter-matcher_substring.

Quick Start

A minimal runtime configuration example (no plugin-manager-specific instructions):

" Example: minimal settings to configure and start ddu.
" Ensure ddu.vim and at least one UI and one source are installed beforehand.

" Set a default UI and basic kind option.
call ddu#custom#patch_global(#{
    \   ui: 'ff',
    \ })

" Set the default action for file kind
call ddu#custom#patch_global(#{
    \   kindOptions: #{
    \     file: #{
    \       defaultAction: 'open',
    \     },
    \   },
    \ })

" Use substring matcher
call ddu#custom#patch_global(#{
    \   sourceOptions: #{
    \     _: #{
    \       matchers: ['matcher_substring'],
    \     },
    \   },
    \ })

" Open ddu with the file source in the current directory
call ddu#start(#{
    \   sources: [#{ name: 'file', params: {} }],
    \ })

" Start ddu with a simple source list and optional input.
" Replace 'file' with any installed source name.
:call ddu#start({'name': 'list', 'sources': ['file']})

Notes:

  • For full documentation, read :help ddu or open doc/ddu.txt.
  • If you are unsure which UI or source to install first, see the community topic: https://github.com/topics/ddu-vim

Contributors

Shougo

1,023 commits

Milly

41 commits

Copilot

31 commits

hori-ryota

24 commits

Languages

TypeScript

90.2%

Vim Script

9.6%