유닉스 파이프 라인에서 vim을 어떻게 사용하나요?
Aug 20 2020
다음 호출을 사용하여 파일을 grep하기 위해 vim / ex를 사용할 수 있습니다.
ex -c'g/foo/p' -cq -s afile.txt
비슷한 명령을 사용하여 stdin에서 일부 텍스트를 grep하고 싶습니다. 다음 명령이 작동해야한다고 생각했지만 출력이 생성되지 않습니다.
cat afile.txt | ex -c'g/foo/p' -cq -s -
vim -e
대신 사용하면 똑같은 일이 발생합니다 ex
.
cat test.md | vim -e -c'g/foo/p' -cq -s -
ex가 stdin에서 초기 버퍼를 읽고 출력을 stdout으로 인쇄하여 Unix 파이프 라인 내에서 사용할 수 있도록 강제 할 수있는 방법이 있습니까?
답변
4 user938271 Aug 21 2020 at 02:34
특수 파일 이름 -
을 -e
다음으로 이동하십시오 .
cat test.md | vim -e -c'g/foo/p' -cq -s -
^
✘
cat test.md | vim - -e -c'g/foo/p' -cq -s
^
✔
전에 -e
, -
문자 텍스트로 읽습니다. 후 -e
, -
전직 명령으로 읽습니다.
Vim: Reading from stdin...
경고 를 표시하지 않으려면 --not-a-term
인수를 vim(1)
명령에 전달하십시오 .
cat test.md | vim - -e -c'g/foo/p' -cq -s --not-a-term
^----------^
Vim을 종료하려면 다음 :qa!
대신 실행하십시오 :q
.
cat test.md | vim - -e -c'g/foo/p' +'qa!' -s --not-a-term
^-^
당신은 가입 할 수 있습니다 -e
그리고 -s
, 당신은 대체 할 수 -c
와 함께 +
:
cat test.md | vim - -es +'g/foo/p' +'qa!' --not-a-term
^ ^
이제 Vim의 출력을 다른 셸 유틸리티로 전달할 수 있습니다. 예 wc(1)
:
cat test.md | vim - -es +'g/foo/p' +'qa!' --not-a-term | wc -l
^-----^
또한보십시오:
- vims
- 파이프 라인 필터링을위한 Vim
- Vim의 사회 생활
- 내 노트