Как автоматически форматировать JSON при сохранении в Vim
Если честно go
испортил мне. С go
Я привык к строгому стандарту форматирования, который применяется моим редактором (vim) и почти принят и сопровождается всеми остальными в команде и по всему миру.
Я хотел отформатировать файлы JSON при сохранении таким же образом.
вопрос: как автоматически форматировать/отступ/Линт JSON-файлы при сохранении в vim.
7 ответов
в одной команде попробуйте следующее:
execute '%!python -m json.tool' | w
затем вы можете добавить собственную привязку ключа, чтобы сделать ее более простым нажатием клавиши. Конечно, для этого вам нужно установить Python на вашем компьютере.
Если вы заинтересованы в использовании внешнего инструмента, и вы делаете некоторую работу с json, я бы предложил использовать jq
:
https://stedolan.github.io/jq/
затем, вы можете выполнить :%!jq '.'
внутри vim, который заменит текущий буфер выходом jq.
спасибо ммонту и Хосе Б, это то, что я закончил делать:
предупреждение это перезапишет ваш буфер. Поэтому, если вы откроете файл json, который уже имеет синтаксическую ошибку, вы потеряете весь файл (или можете потерять его).
добавьте эту строку в свой ~/.vimrc
" Ali: to indent json files on save
autocmd FileType json autocmd BufWritePre <buffer> %!python -m json.tool
вам нужно иметь python на вашей машине, конечно.
EDIT: этот следующий не должен перезаписывать буфер, если ваш json имеет ошибку. Это делает его правильным ответом, но поскольку я не очень хорошо понимаю сценарий Vim или оболочку, если на то пошло, я представляю его как экспериментальную вещь, которую вы можете попробовать, если Вам ПОВЕЗЕТ. Это может зависеть и от вашей оболочки. Вы предупреждены.
" Ali: to indent json files on save
autocmd FileType json autocmd BufWritePre <buffer> %!python -m json.tool 2>/dev/null || echo <buffer>
поиск плагинов JSON на vim.org вернул это:
jdaddy.vim: манипуляция JSON и красивая печать
Он имеет следующее описание:
gqaj
" pretty prints "(обертывания / отступы / сортировка ключей / в противном случае очищает) конструкция JSON под курсором.
если он выполняет форматирование, которое вы ожидаете, вы можете создать autocmd BufWritePre
формат при сохранении.
%!python -m json.tool
или
%!python -c "import json, sys, collections; print json.dumps(json.load(sys.stdin, object_pairs_hook=collections.OrderedDict), ensure_ascii=False, indent=4)"
вы можете добавить это в свой vimrc:
com! FormatJSON %!python -m json.tool
чем вы можете использовать :FormatJson
в формате JSON файлы
Vim Autoformat
https://github.com/Chiel92/vim-autoformat
существует этот плагин Vim, который поддерживает несколько схем автоматического формата и отступов, а также расширение с помощью пользовательских форматеров для каждого типа файла.
https://github.com/Chiel92/vim-autoformat#default-formatprograms
Примечание:
вам понадобится nodejs
и js-beautify
установлен, как vim-autoformat
использует их как внешний инструмент по умолчанию.
npm install -g js-beautify
вы можете искать плагин "vim-JSON-line-format", открыть файл в Normal mode
, переместите курсор на линию json, используйте <leader>pj
чтобы показать форматированный json, распечатав его, используйте <leader>wj
можно изменить текст на форматированный json.
Недопустимый json не может форматировать!