Skip to content

Database autocompletion powered by https://github.com/tpope/vim-dadbod

License

NotificationsYou must be signed in to change notification settings

kristijanhusak/vim-dadbod-completion

Folders and files

NameName
Last commit message
Last commit date
Oct 12, 2020
Aug 28, 2021
Jul 30, 2024
Jul 27, 2024
Jul 30, 2024
Aug 15, 2024
Oct 11, 2022
Apr 3, 2021
Apr 3, 2021
Apr 10, 2020
Apr 10, 2020
Jul 15, 2024
Apr 3, 2021
Feb 13, 2022

Repository files navigation

vim-dadbod-completion

Database auto completion powered by vim-dadbod.

Supports:

coc-db

Video presentation by TJ:

Video presentation by TJ

Install

Dependencies:

For coc.nvim

:CocInstall coc-db

For deoplete, completion-nvim, nvim-compe, ddc and omnifunc, install it with your favorite plugin manager.

Plug 'tpope/vim-dadbod'
Plug 'kristijanhusak/vim-dadbod-ui' "Optional
Plug 'kristijanhusak/vim-dadbod-completion'

" For built in omnifunc
autocmd FileType sql setlocal omnifunc=vim_dadbod_completion#omni

" hrsh7th/nvim-compe
let g:compe.source.vim_dadbod_completion = v:true

" hrsh7th/nvim-cmp
  autocmd FileType sql,mysql,plsql lua require('cmp').setup.buffer({ sources = {{ name = 'vim-dadbod-completion' }} })

" Shougo/ddc.vim
call ddc#custom#patch_filetype(['sql', 'mysql', 'plsql'], 'sources', 'dadbod-completion')
call ddc#custom#patch_filetype(['sql', 'mysql', 'plsql'], 'sourceOptions', {
\ 'dadbod-completion': {
\   'mark': 'DB',
\   'isVolatile': v:true,
\ },
\ })

Configuration using lazy.nvim with vim-dadbod-ui

return {
  'kristijanhusak/vim-dadbod-ui',
  dependencies = {
    { 'tpope/vim-dadbod', lazy = true },
    { 'kristijanhusak/vim-dadbod-completion', ft = { 'sql', 'mysql', 'plsql' }, lazy = true },
  },
  cmd = {
    'DBUI',
    'DBUIToggle',
    'DBUIAddConnection',
    'DBUIFindBuffer',
  },
  init = function()
    -- Your DBUI configuration
    vim.g.db_ui_use_nerd_fonts = 1
  end,
}

Features

  • Autocomplete table names, with automatic quoting where needed. Works for all schemes that vim-dadbod supports.
  • Autocomplete table columns, context aware. Also knows to read aliases (select * from mytable tbl where tbl.id = 1). Currently works for PostgreSQL, MySQL, Oracle, SQLite (requires version 3.37.0 (2021-11-27)) and SQLserver/MSSQL.
  • Out of the box integration with vim-dadbod-ui

How it works

  • If an sql buffer is created by vim-dadbod-ui, it reads all the configuration from there. It should work out of the box.
  • If vim-dadbod-ui is not used, vim-dadbod g:db or b:db is used. If you want, you can also add b:db_table to limit autocompletions to that table only.

Settings

Default mark for completion items is [DB]. To change it, add this to vimrc:

let g:vim_dadbod_completion_mark = 'MYMARK'

Commands

This plugin caches the database tables and columns to leverage maximum performance. If you want to clear the cache at any point just run:

:DBCompletionClearCache

Todo

  • Integration for column autocompletion with more database types