Может ли VIM автоматически индентировать SQL? - PullRequest
10 голосов
/ 20 декабря 2011

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

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

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

Ответы [ 3 ]

12 голосов
/ 26 апреля 2017

Установив модуль 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

10 голосов
/ 20 декабря 2011
4 голосов
/ 07 июля 2017

Вы можете использовать плагин 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

...