vim: 이와 같은 명령을 파이프하는 방법은 무엇입니까?

vim: 이와 같은 명령을 파이프하는 방법은 무엇입니까?

텍스트 파일이 있어요..

value #value2
 value2 #value3
...

-f로 정렬하고 # 앞에 두 개의 탭을 추가하고 싶어서 이렇게 했습니다.

:'<,'>norm f#i^I^I |!sort -f

그러나 나에게 나쁜 결과를 제공합니다! 두 개의 별도 명령을 사용하는 해결 방법을 알고 있습니다.

:'<,'>norm f#i^I^I^I
:'<,'>!sort -f

하지만 문제는 이 명령을 파이프로 연결할 수 있느냐는 것입니다.

답변1

좀 찾아보면 :help :normal알게 될 거야

"|"는 명령의 일부로 간주되므로 이 명령 뒤에는 다른 명령이 올 수 없습니다.

또한 이는 |파이프라인이 아닙니다. 이는 명령을 "연결"하는 한 가지 방법일 뿐입니다. 두 개의 쉘 명령을 ;. 따라서 한 명령에 적용된 범위는 후속 명령에 적용되지 않습니다.

사용자 정의 기능이나 이와 유사한 기능을 포함하지 않는 가장 가까운 대안은 다음을 사용 :substitute하고 범위를 다시 지정하는 것입니다.

:'<,'>s/#/\t\t\t#/ | '<,'> !sort -f

관련 정보