說實話go
已經寵壞了我。隨着go
我習慣了有一個嚴格的格式標準,由我的編輯(vim)執行,幾乎被團隊和世界各地的其他人接受並遵循。如何自動格式化保存在Vim中的JSON
我想以同樣的方式格式化JSON文件。
問題:如何在保存vim時自動格式化/縮進/ lint json文件。
說實話go
已經寵壞了我。隨着go
我習慣了有一個嚴格的格式標準,由我的編輯(vim)執行,幾乎被團隊和世界各地的其他人接受並遵循。如何自動格式化保存在Vim中的JSON
我想以同樣的方式格式化JSON文件。
問題:如何在保存vim時自動格式化/縮進/ lint json文件。
感謝mMontu和Jose B,這是我落得這樣做:
警告這將覆蓋緩衝區。所以如果你打開一個已經有語法錯誤的json文件,你將會丟失整個文件(或者可能會丟失它)。
此行添加到您的~/.vimrc
" Ali: to indent json files on save
autocmd FileType json autocmd BufWritePre <buffer> %!python -m json.tool
你需要在你的機器上的Python,當然。
編輯:如果你的json有錯誤,下一個不應該覆蓋你的緩衝區。這使得它成爲正確的答案,但由於我沒有很好地理解Vim腳本或shell,所以我把它作爲一個實驗性的東西,如果你感覺幸運的話,你可以試試。它也可能取決於你的外殼。你被警告。
" Ali: to indent json files on save
autocmd FileType json autocmd BufWritePre <buffer> %!python -m json.tool 2>/dev/null || echo <buffer>
有沒有辦法更新這個以防止在json格式不正確的情況下寫入緩衝區。獎勵積分在輔助窗口之一中產生錯誤。 – 2016-07-15 16:34:34
@NeoZenith查看編輯。 – Ali 2016-07-15 17:44:19
用格式良好的json測試它會引發錯誤。我沒有足夠的vim腳本來調試錯誤,因此我在這裏問。第一個沒有檢查消除緩衝區的響應對於格式良好的json完美無缺。 – 2016-07-15 20:53:48
一種JSON插件搜索上vim.org返回此:
jdaddy.vim : JSON manipulation and pretty printing
它具有以下的描述:
gqaj
「漂亮打印」(包裹/縮進/排序鍵/否則清理) 光標下的JSON構造。
如果它符合您期望的格式,那麼您可以在保存時創建一個autocmd BufWritePre
格式。
在一個命令,試試這個:
execute '%!python -m json.tool' | w
然後,您可以添加自己的鍵綁定,使其更簡單的按鍵。當然,爲了這個工作,你需要在你的機器上安裝Python。
如果你是熱衷於使用外部工具和你正在做的JSON的一些工作,我會建議使用jq
:
https://stedolan.github.io/jq/
然後,你可以在裏面VIM執行:%!jq '.'
這將用jq的輸出替換當前緩衝區。
對於尋找Windows方法的人,將單引號改爲雙引號:':%!jq「。」'假設您下載了jq的windows版本,並將其從'jq- win64.exe'到'jq.exe'(類似於32位版本)。另外,確保它在你的道路上。 – 2017-11-22 13:37:04
Vim的自動格式化
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行格式」插件,在3210打開一個文件,將光標放在JSON行,使用<leader>pj
顯示由打印它格式化JSON,使用<leader>wj
可以將文本更改爲格式化的json。 無效的json無法格式化!
%!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文件
相關d post:[如何在vim中修復json縮進?](http://stackoverflow.com/q/16620835/438329) – 2014-10-06 15:27:34