vim에서 외부 명령 실행

vim에서 외부 명령 실행

다음을 실행하면 다음과 같습니다 vim.

:w !wc -w

파일의 단어 수를 얻었습니다. 하지만 구문을 이해하지 못합니다. 이것이 어떻게 작동하며 전체 파일이 아닌 단락의 단어 수를 원하도록 지정하려면 어떻게 해야 합니까?

답변1

을 실행하면 :w !wc -wvim은 임시 파일을 생성한 후 해당 파일을 다음 명령으로 파이프합니다 !. 또는 오히려 데이터를 임시 파일에 넣고 쉘에 다음과 같은 작업을 수행하도록 요청합니다.

 (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결과적으로 현재 파일의 단어 수를 계산합니다.

관련 정보