2016-10-19 2 views
0
내가있는 방법을 찾고 있어요

더 잘 읽을 수있는 뭔가 포맷이VIM : 예를 들어, 똑같이

[a: b -> {a, b, c}, d<1, 2>, b: [2, 3], (a, b)] 

같은 몇 가지 임의의 텍스트를 모두 괄호, 괄호 및 블록 브래킷을 다시 포맷 :

[ 
    a: b -> { 
     a, 
     b, 
     c 
    }, 
    d<1, 2>, 
    b: [ 
     2, 
     3 
    ], 
    (
     a, 
     b 
    ) 
] 

누구든지 예제와 비슷한 대괄호로 텍스트를 다시 포맷 할 수있는 방법을 알고 있습니까? 형식이 위와 똑같은 것은 중요하지 않으며 단지 가독성을위한 것입니다 (텍스트는 a, b 또는 c보다 훨씬 깁니다).

현재,이 매핑을 사용하고 있습니다 :

%j<CR>:%s/[\[{]\\|[\]}],\\|,/&\r/g<CR>gg=Ggg:nohls<CR> 

이 잘되지 작동하고 몇 가지 추가 정리가 필요합니다.

답변

1

설명하는 것처럼 일반 텍스트를 여러 줄 구성 요소로 분할하는 일반적인 용도가 있다고 생각하지 않습니다. 나는 이런 식으로 시도하는 splitjoin이라는 플러그인을 가지고 있지만 특정 프로그래밍 언어의 특정 구문에 대해 작동합니다. 예 : lists and tuples in python. 전체 도움말 파일을 살펴보면이 도움말 파일이 잘 작동한다는 것을 알 수 있지만 확실히 말할 수는 없습니다. splitting and joining functions의 일부를 직접 다시 사용할 수도 있습니다.

또 다른 광산 플러그인은 sideways입니다. 이는 목록에서 인수에 대한 텍스트 개체를 제공하기 때문에 (나중에 시각적으로 선택하고 조작 할 수 있기 때문입니다). 그러나 내 실험에서는 d<1, 2>을 감지하지 못했기 때문에 등과 같이 일반 플러그인에 넣지는 않았지만 <> 브래킷을 감지하는 your own list definition을 만들어야 할 수도 있습니다. 불행히도, 그때조차도 그 전에는 ->에 혼란스러워합니다. 모두 같은 목록에있는 경우이 플러그인이 도움이된다고 생각하지 않습니다.

이것은 해결책이 아니며 방향 일뿐입니다. 이것이 특정 프로그래밍 언어의 코드라면 어떤 언어인지 지정하는 것이 도움이 될 수 있습니다.

+1

나는 splitjoin을 시도하고 옆으로 쳐다 보았다. Splitjoin은 그런 것처럼 보이지만 다른 언어 플러그인에서 콜백을 선택하면 제대로 작동하지 않는 것 같습니다. 일반적으로이 문제에 대해서는 플러그인이 필요하지 않다고 생각합니다. 방금 genindent plugin을 찾았습니다. 나는 그것을 시도 할 것이다. – steffen