Can VIM autoindent SQL?

痞子三分冷 提交于 2019-12-12 07:47:29

问题


"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 with pip
  • 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!