2014-09-17 1 views
2

필자는 특정 줄에 이라는 파일에이라는 태그가 있으며 상대적 중요성을 위해 여러 개의 파이프가 있습니다. vim에서이 줄을 중요도 및 사전 순으로 정렬하는 방법은 무엇입니까?vim에서 특정 문자 수를 기준으로 정렬하는 방법은 무엇입니까?

입력 HAZ는 알파벳 순으로 파이프의 수를 기준으로 정렬되지만

foo ||| 
bar || 
haz || 
bar 
cli 

하는 것으로

cli 
bar || 
bar 
foo ||| 
haz || 

출력. 감사합니다.

+0

'bar'는'cli '앞에 오는 것을 의미합니까? 또는 파이프별로 분류 된 경우에만? – Caek

+0

예! 죄송 해요. 출력이 잘못되었습니다. 실제로 * bar *는 * cli * 앞에 와야합니다. – adeluccar

+0

올바른 출력으로 편집되었습니다. – adeluccar

답변

4

, 당신은 할 수 있습니다 :

:sort! r /|*$/ 

당신이 중요성과 알파벳으로 정렬하려는 경우, 당신은 할 수 있습니다

:sort|sort! r/|*$/ 

참고 당신의 출력 아무튼 당신이 묘사 한 규칙을 따르지 마라.

+0

+1하지만 nitpick에 : 첫 번째 정렬은 결정적이지 않습니다. 두 번 적용하면 주문 순서가 변경됩니다 (OP가 필요한 부분 만) *. 두 번째 정렬은 결정적이지만 정렬 순서는 내림차순으로 오름차순입니다. OP가 필요합니다 * (Caek의 설명에 따라 바가 cli 앞에 있어야한다고 가정) *. –

+0

동의. 나는 그 부분에서 실수를했다. 켄트 (Kent) 코드 스 니펫을 보내 주셔서 감사합니다. 두 번째 것은 정확히 내가 원하는 것을합니다. – adeluccar

1

당신은 외부 리눅스 sort 명령에 액세스 할 수있는 경우,이 내부 정력 실행할 수 있습니다

:%!sort -k2r -k1,1 

이 역순으로 두 번째 열을 정렬하고 정렬하여 다음 두 번째 열에서 중복이있는 경우 첫 번째 열은 오름차순입니다. 내장 :sort 정력

+0

시간을내어 주셔서 감사합니다. vim에서 해결책을 찾고있었습니다. – adeluccar

+0

나는 vim에서 너무 많이 어지럽히 지 않고 어떻게하는지 확신하지 못했기 때문에 Kent의 대답으로부터 뭔가를 배웠다. 그에게 +1 – Caek

관련 문제