다음을 실행하면 다음과 같습니다 vim
.
:w !wc -w
파일의 단어 수를 얻었습니다. 하지만 구문을 이해하지 못합니다. 이것이 어떻게 작동하며 전체 파일이 아닌 단락의 단어 수를 원하도록 지정하려면 어떻게 해야 합니까?
답변1
을 실행하면 :w !wc -w
vim은 임시 파일을 생성한 후 해당 파일을 다음 명령으로 파이프합니다 !
. 또는 오히려 데이터를 임시 파일에 넣고 쉘에 다음과 같은 작업을 수행하도록 요청합니다.
(wc -w) < /tmp/vHhjUPf/2
마지막 부분은 vim이 데이터를 저장하는 임의의 폴더/파일 이름입니다. 주목해야 할 흥미로운 점 중 하나는 이 명령이 호환되지 않는 셸에서 실패한다는 것입니다.물고기. 이는 Fish가 (cmd)
전통적인 사용법 대신 명령 대체 구문을 사용하기 때문입니다.
답변2
외부 명령에 전달할 데이터 범위를 지정하려면 다음을 입력하십시오.
:<range>w !<command>
예를 들어,
:1,5w !wc -w
1행과 5행으로 둘러싸인 범위의 단어 수가 계산됩니다. :h 10.3
범위에 대한 자세한 정보를 얻으려면 입력하세요 .
당신은 또한 사용할 수 있습니다
:<range>!<command>
1~5행을 명령 출력으로 바꿉니다. 이는 외부 명령을 사용하여 텍스트를 필터링할 때 유용합니다. (예: 정렬용) :h !
필터에 대한 자세한 정보를 얻으려면 입력하세요.
Vim이 텍스트를 표준 입력으로 파이프하지 않고 외부 명령을 실행하려면 다음과 같이 명령을 실행하세요: :!command
.
답변3
vim 명령은 :w
단순히 현재 파일을 디스크에 씁니다.
:w newfilename
현재 파일을 쓰는 새 파일 이름을 사용하십시오 .
이 명령은 :!ls -al
매개변수를 사용하여 외부 프로그램을 실행하고 결과를 표시합니다.ls
-al
언급한 명령( :w !wc -w
)은 (아마도) 현재 파일을 외부 명령( )에 대한 파이프에 기록하고, wc -w
결과적으로 현재 파일의 단어 수를 계산합니다.