programing

vIM에서 JSON 들여쓰기를 수정하는 방법

magicmemo 2023. 4. 1. 09:00
반응형

vIM에서 JSON 들여쓰기를 수정하는 방법

vim에서 JSON의 기본 들여쓰기는 다음과 같습니다.

{
    "employees": [
    { "firstName":"John" , "lastName":"Doe" }, 
    { "firstName":"Anna" , "lastName":"Smith" }, 
    { "firstName":"Peter" , "lastName":"Jones" }
    ]
}

하지만 내가 기대하는 것은:

{
    "employees": [
        { "firstName":"John" , "lastName":"Doe" }, 
        { "firstName":"Anna" , "lastName":"Smith" }, 
        { "firstName":"Peter" , "lastName":"Jones" }
    ]
}

구글을 검색하여 vim-json 플러그인을 몇 개 시도했지만 모두 이 문제를 해결하지 못했습니다.

더 쉬운 방법은 외부 명령어를 선택 항목에 대한 필터로 사용하는 것입니다.

  1. 선택하다
  2. 유형:!python -m json.tool

권장되는 방법은 Romainl입니다.단, 경우에 따라서는 JSON 텍스트를 버퍼 내에 들여쓰기 할 필요가 있습니다.json파일 형식다음 명령을 사용합니다.

command! -range -nargs=0 -bar JsonTool <line1>,<line2>!python -m json.tool

그냥 뛰어!:JsonTool현재 라인이 예쁘게 인쇄됩니다.범위도 지정할 수 있습니다.

:JsonTool
:'<,'>JsonTool
:10,25JsonTool

python이 없거나 순수 vim 솔루션을 선호한다면 Tim Pope의 jdaddy 플러그인에 관심이 있을 것입니다.Jdaddy는 JSON 텍스트 개체를 제공합니다.aj그리고.ij인쇄 JSON 포맷(예:gqaj.

예를 들어 python이 있는 경우 다음과 같은 방법으로 콘텐츠를 python의 json 툴로 전송할 수 있습니다.

:%!python -m json.tool

가지고 계신 경우jq(source)를 사용할 수 있습니다.명령어 모드에서 사용할 수 있습니다.

:%!jq .

python -m json.tool는 JSON 오브젝트속성의 위치를 정렬합니다.노드가 설치되어 있는 경우 다음 기능만 사용할 수 있습니다.

function FormatJSON(...) 
  let code="\"
        \ var i = process.stdin, d = '';
        \ i.resume();
        \ i.setEncoding('utf8');
        \ i.on('data', function(data) { d += data; });
        \ i.on('end', function() {
        \     console.log(JSON.stringify(JSON.parse(d), null, 
        \ " . (a:0 ? a:1 ? a:1 : 2 : 2) . "));
        \ });\""
  execute "%! node -e " . code 
endfunction

매핑처f-j.vimrc로

nmap fj :<C-U>call FormatJSON(v:count)<CR>

탭에 여러 공간을 전달할 수도 있습니다. 지정하지 않으면 2가 기본값입니다.

4fj

저의 완전한 .vimrc는 https://github.com/botverse/.dotfiles/blob/master/.vimrc에 있습니다.

gg=Gvim을 사용하는 경우 필요합니다.

다음은 Ruby의 예입니다.

:%! ruby -rjson -e "print JSON.pretty_generate(JSON.parse(ARGF.read))"

(https://gist.github.com/zinovyev/c4b6ec3c24670278adfebfb9ecced84b)

이 스테이트먼트를 에 추가합니다./etc/vim/vimrc:

autocmd Filetype json setlocal ts=2 sw=2 expandtab

이러한 파일의 탭 동작을 정의하는 것 외에 공백 탭이 2개 있는 json 프레젠테이션을 강제합니다.

python을 사용하여 json 형식을 지정할 수 있습니다.

:%!python -m json.tool

이외에도 다음과 같은 몇 가지 다른 도구를 사용할 수 있습니다.jsbeautify,prettydiff,prettier,jq그리고.fixjson.

상세한 것에 대하여는, https://medium.com/@codevalues/how-to-a-json-with-line-using-vim-7f9d1ec550dc 를 참조해 주세요.

언급URL : https://stackoverflow.com/questions/16620835/how-to-fix-json-indentation-in-vim

반응형