sqlvimindentationauto-indent

Can VIM autoindent SQL?


"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.


Solution

  • By installing the python module sqlparse, which makes the sqlformat command available in your terminal.

    pip install sqlparse

    from vim you can use

    :%!sqlformat --reindent --keywords upper --identifiers lower -

    in order to 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