Database autocompletion powered by https://github.com/tpope/vim-dadbod
Database auto completion powered by vim-dadbod. Supports:
omnifunc
Dependencies:
For coc.nvim
:CocInstall coc-db
For deoplete
, completion-nvim
, nvim-compe
, ddc
and omnifunc
, install it with your favorite plugin manager.
function! PackagerInit() abort
packadd vim-packager
call packager#init()
call packager#add('kristijanhusak/vim-packager', { 'type': 'opt' })
call packager#add('tpope/vim-dadbod')
call packager#add('kristijanhusak/vim-dadbod-completion')
call packager#add('Shougo/deoplete.nvim')
"or
call packager#add('haorenW1025/completion-nvim')
"or
call packager#add('hrsh7th/nvim-compe')
"or
call packager#add('vim-denops/denops.vim')
call packager#add('Shougo/ddc.vim')
endfunction
" 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' }} })
" For completion-nvim
augroup completion
autocmd!
autocmd BufEnter * lua require'completion'.on_attach()
autocmd FileType sql let g:completion_trigger_character = ['.', '"', '`', '[']
augroup END
" 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,
\ },
\ })
" Source is automatically added, you just need to include it in the chain complete list
let g:completion_chain_complete_list = {
\ 'sql': [
\ {'complete_items': ['vim-dadbod-completion']},
\ ],
\ }
" Make sure `substring` is part of this list. Other items are optional for this completion source
let g:completion_matching_strategy_list = ['exact', 'substring']
" Useful if there's a lot of camel case items
let g:completion_matching_ignore_case = 1
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
.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.Default mark for completion items is [DB]
. To change it, add this to vimrc:
let g:vim_dadbod_completion_mark = 'MYMARK'
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