다른 열을 변경하지 않고 열 정렬


10

나는 최근 필터링 !기술을 알고 있었고 그것을 좋아합니다. 불행히도 비주얼 블록 모드에서는 사용할 수 없습니다. 여기에 일부 전문가가 도움이되기를 바랍니다.

기본적으로 아래 세 번째와 같은 열을 적절하게 정렬하고 싶습니다 (MWE 만). 그리고 정렬 할 때 다른 열을 방해하고 싶지 않습니다.

유틸리티를 !통해 시각적으로 (블록 모드) 선택한 세 번째 열 을 필터링 ( ) 하려고했습니다 sort. 그러나 정렬은 선택을 넘어 확장됩니다. 즉, 선택뿐만 아니라 모든 행이 교환되어 첫 번째 열을 기준으로 정렬 됩니다.

1.  LARGEST         40
2.  SECOND-LARGEST  168     
3.  MID             2.8     
4.  MID             540     
5.  MID             14.84   
6.  MID             40      
7.  SECOND-LEAST    64      
8.  LEAST           8

비주얼 블록을 사용하여 마지막 열을 선택 !sort --reverse했는데 다음 과 같이 표시됩니다.

'<,'>!sort --reverse

그리고 결과는 내가 기대 한 것과 반대입니다. 결과는 세 번째 열 선택에 관계없이 첫 번째 열을 기준으로 한 열뿐만 아니라 전체 행이 정렬 / 스왑되었습니다 !

 8.  LEAST           8    
 7.  SECOND-LEAST    64      
 6.  MID             40      
 5.  MID             14.84   
 4.  MID             540     
 3.  MID             2.8     
 2.  SECOND-LARGEST  168     
 1.  LARGEST         40   

달리 불가능하지 않으면 sed/ 와 같은 비교적 고급 도구가 아닌 순수한 vim + 정렬 솔루션을 원합니다 awk. 비주얼 모드와 비교하여 비주얼 블록 모드가 얼마나 제한되어 있는지 아는 것이 더 중요합니다.


이렇게해도 문제가 해결되지는 않지만 sort사용할 수 있는 vim 내부 명령이 있으므로 !sort정기적 정렬을 위해 외부를 호출 할 필요가 없습니다 .
Dalker

2
필터는 라인 에서만 작동 합니다 .
romainl

@Dalker 예, 감사합니다. 그러나 나는 이미 그것을 시도했는데 비슷한 결과를 냈습니다.
가능성을 사랑합니다

@romainl 그게 그래? 희망의 광선이 없습니까? 나는 Vim에서 그런 일이 거의 일어나지 않는다 !! 그럼에도 불구하고 다른 것을 선택하고 출력까지 문제의 징후가없는 후에 "필터는 라인 에서만 작동합니다"라고 말하는 것이 이상 하지 않습니까? 경고 / 오류가 발생하지 않으면 버그라고 주장합니다.
가능성을 사랑합니다

버그? 하하, 아니야. 동작은 문서화되어있을 :help filter뿐만 아니라 표준화되어 있습니다 (죄송합니다. POS와 딥 링크하는 방법을 모르겠습니다). RFTM을하지 않으면 불만을 제기 할 수 없습니다.
romainl

답변:


9

최선의 희망은 vis.vim 플러그인 이라고 생각합니다 . 이 플러그인은 B블록에 명령을 적용 할 수 있는 명령 을 제공합니다 .

플러그인을 설치 한 후 블록을 선택한 다음 다음을 사용합니다.

:'<,'>B !sort

명령은 무엇이든 가능하므로 !sort다른 파일에 저장 ( :'<,'>B w foo.txt)하거나 대체 ( :'<,'>B s/foo/bar/g)를 적용하는 것과 같이 블록에서 다른 많은 처리를 수행 할 수 있습니다.


1
@LovesProbability, 처음 두 열을 변경하지 않고 세 번째 열을 정렬하려는 경우이 스레드 가 도움 될 수 있습니다.
Jair López

@ JairLópez 위법 행위없이 내 질문을 다른 사람이 다른 곳으로 복사하여 원래의 출처 (예 :이 답변의 사본으로 작성된 페이지)로 돌아가도록 요청한 방법이 정말 재밌습니다. 거기에서 답을 찾도록 부탁드립니다.
가능성을 사랑합니다

귀하의 의견에 감사드립니다. 나는 (1) 귀하의 질문과이 답변이 흥미 로웠 기 때문에 그렇게했습니다. (2) 당신은 혼자가 아니고 더 많은 사람들이 관심을 가질 수 있습니다. (3) 이것은 누군가가 $블록 방식의 시각적 모드에서 어떻게 사용 되는지 이해하도록 도울 수있는 좋은 기회 입니다.
Jair López
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.