问题
"SQL Statement indentation good practice" appears to be the accepted format for writing SQL blocks.
Is there a Vim indent/syntax file that would adhere to this standard, or at least be close?
Currently my Vim left alights pretty much everything and only indents certain keywords.
回答1:
"SQLUtilities : SQL utilities - Formatting, generate - columns lists, procedures for databases" has the SQL Utilities plugin, which is capable. And "How to auto-format and auto-capitalize SQL in Vim" is a related discussion.
回答2:
By installing python module sqlparse
pip install sqlparse
from vim you can use
:%!sqlformat --reindent --keywords upper --identifiers lower -
in order to not attach a shortcut ,pt I added following configuration to my .vimrc config file:
autocmd FileType sql call SqlFormatter()
augroup end
function SqlFormatter()
set noai
" set mappings...
map ,pt :%!sqlformat --reindent --keywords upper --identifiers lower -<CR>
endfunction
You can customize sqlformat a bit. See
sqlformat --help
回答3:
You can use the vim-autoformat plugin:
- Install
vim-autoformat
with your favourite plugin-manager (I prefer lightweight vim-plug) - Install
sqlparse
withpip
- Add the following lines to your vim/nvim config
noremap <F3> :Autoformat<CR>
let g:formatdef_sql = '"sqlformat --reindent --keywords upper - identifiers lower -"'
let g:formatters_sql = ['sql']
If you see this message: vim has no support for python
, you should rebuild your vim with python support or install python-client for neovim
回答4:
If you use coc.nvim then you can add the coc-sql extension.
来源:https://stackoverflow.com/questions/8577367/can-vim-autoindent-sql