Comment formater automatiquement JSON sur Enregistrer dans Vim
Pour être honnête go
m'a gâté. go
je me suis habitué à avoir une norme de formatage stricte qui est appliquée par mon éditeur (vim) et qui est presque acceptée et suivie par tous les autres membres de l'équipe et partout dans le monde.
je voulais formater les fichiers JSON sur save de la même façon.
Question: Comment formater automatiquement/indent/lint les fichiers json sur Enregistrer dans vim.
7 réponses
dans une commande, essayez ceci:
execute '%!python -m json.tool' | w
Vous pouvez alors ajouter votre propre liaison de clé pour en faire une touche plus simple. Bien sûr, pour que cela fonctionne, vous devez avoir installé Python sur votre machine.
si vous êtes désireux d'utiliser un outil externe et que vous faites du travail avec json, je suggère d'utiliser le jq
:
https://stedolan.github.io/jq/
Ensuite, vous pouvez exécuter :%!jq '.'
inside vim qui remplacera le tampon courant par la sortie de jq.
Merci mMontu et Jose B, c'est ce que j'ai fini par faire:
avertissement ceci écrasera votre tampon. Donc, si vous OUVREZ un fichier json qui a déjà une erreur de syntaxe, vous perdrez tout votre fichier (ou perdre).
ajouter cette ligne à votre ~/.vimrc
" Ali: to indent json files on save
autocmd FileType json autocmd BufWritePre <buffer> %!python -m json.tool
vous devez avoir python sur votre machine, bien sûr.
EDIT: cette prochaine devrait pas remplacer votre tampon si votre json a erreur. Ce qui en fait la bonne réponse, mais puisque je n'ai pas une bonne compréhension du script Vim ou shell pour cette question, je le présente comme une chose expérimentale que vous pouvez essayer si vous vous sentez chanceux. Cela dépend peut-être aussi de votre coquille. Vous êtes prévenu.
" Ali: to indent json files on save
autocmd FileType json autocmd BufWritePre <buffer> %!python -m json.tool 2>/dev/null || echo <buffer>
une recherche de plugins JSON sur vim.org returned this:
jdaddy.vim : JSON manipulation et jolie impression
C'est le suivant sur la description:
gqaj
"assez imprime" (enveloppement/tirets/sortes de clés/sinon nettoie) la construction JSON sous le curseur.
si elle fait le formatage que vous attendez alors vous pouvez créer un autocmd BufWritePre
au format lors de l'enregistrement.
%!python -m json.tool
ou
%!python -c "import json, sys, collections; print json.dumps(json.load(sys.stdin, object_pairs_hook=collections.OrderedDict), ensure_ascii=False, indent=4)"
vous pouvez ajouter ceci à votre vimrc:
com! FormatJSON %!python -m json.tool
que vous pouvez utiliser :FormatJson
format des fichiers json
Vim Mise En Forme Automatique
https://github.com/Chiel92/vim-autoformat
il y a ce plugin Vim qui prend en charge le format automatique multiple et les schémas de tirets ainsi que l'extension avec des formateurs personnalisés par type de fichier.
https://github.com/Chiel92/vim-autoformat#default-formatprograms
Remarque:
Vous aurez besoin d'avoir nodejs
et js-beautify
installé en tant que vim-autoformat
utilise ceux-ci comme outil externe par défaut.
npm install -g js-beautify
vous pouvez rechercher' vim-JSON-line-format ' plugin, ouvrir un fichier dans Normal mode
, déplacez votre curseur sur le json ligne, utilisez <leader>pj
pour afficher formatées en json par imprimer, utilisez <leader>wj
pourrait changer le texte en format JSON.
JSON invalide ne peut pas formater!