Может ли VIM автоиндентировать SQL?

"Хорошая практика отступов SQL-предложений" представляется принятым форматом для записи блоков SQL.

Есть ли файл отступа/синтаксиса Vim, который бы соответствовал этому стандарту или, по крайней мере, был близок?

В настоящее время мой Vim оставляет много всего и только отступы некоторых ключевых слов.

Ответ 2

Установив модуль python sqlparse

pip install sqlparse

из vim вы можете использовать

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

чтобы не присоединить ярлык , pt, я добавил следующую конфигурацию в конфигурационный файл .vimrc:

autocmd FileType sql call SqlFormatter()
augroup end
function SqlFormatter()
    set noai
    " set mappings...
    map ,pt  :%!sqlformat --reindent --keywords upper --identifiers lower -<CR>
endfunction

Вы можете немного настроить sqlformat. См.

sqlformat --help

Ответ 3

Вы можете использовать плагин vim-autoformat:

  • Установите vim-autoformat с вашим любимым плагином-менеджером (я предпочитаю легкий vim-plug)
  • Установите sqlparse с помощью pip
  • Добавьте следующие строки в конфигурацию vim/nvim
noremap <F3> :Autoformat<CR>
let g:formatdef_sql = '"sqlformat --reindent --keywords upper - identifiers lower -"'
let g:formatters_sql = ['sql']

Если вы видите это сообщение: vim has no support for python, вы должны перестроить свой vim с поддержкой python или установить python-client для neovim