vi에서 bash 명령을 입력하고 표준 출력을 얻을 수 있습니까?
쉘에서 무언가를 찾고 싶다는 이유로 vi를 닫았다가 다시 여는 것이 종종 지루하다는 것을 알게 되었습니다.
답변1
예, 예를 들어 그렇게 하고 싶다면 ls
다음을 시도해 보세요.
:!ls
쉘을 생성하려면 다음을 사용하십시오.
:shell
답변2
나는 ctrl+z
vi를 자고 쉘에서 필요한 것을 실행한 다음 fg
vi를 다시 시작하는 경향이 있습니다. 귀하의 질문에 대한 정확한 답변은 아니지만 이것이 매우 빠른 작업 방법이라는 것을 알았습니다.
백그라운드에서 vi를 여는 것을 잊어버린 경우(바쁠 때 발생할 수 있음), 로그아웃 셸을 사용하려고 하면 ctrl+d
백그라운드 작업이 실행 중이라는 경고 메시지가 표시되며 해당 작업을 닫거나 로그아웃할 수 있습니다. 다시 Ctrl+D를 눌러보세요. 또한 동일한 파일을 두 번 다시 열려고 하면 다시 시작 경고가 표시되므로 a
abort를 누른 다음 fg를 실행하여 vi로 돌아갈 수 있습니다.
답변3
"표준 출력 얻기"를 언급했으므로 다음을 수행할 수 있습니다.
:r! command
명령의 출력이 파일에 추가됩니다.
:<range>!command
명령으로 범위의 내용을 필터링합니다. [예: :1,$!wc
]
답변4
콜론과 느낌표를 사용하여 쉘 경로 및 쉘 스크립트에서 모든 명령을 실행할 수 있습니다. 이 명령은 vi/vim 프로그램을 실행하고 해당 환경을 사용하는 사용자로 실행된다는 점을 기억하십시오.
:!<command>
vi는 런타임 시 유효한 환경을 사용하므로 상위 명령과 동일한 경로를 사용합니다. 일부 쉘은 경로에 프로그램 캐시를 유지하고 vi는 이 캐시를 사용하지 못할 수도 있다는 점을 명심하십시오(사용하는 쉘과 버전에 따라 다름). 따라서 바이너리가 더 많으면 잘못된 오류가 발생할 수 있습니다. 바이너리가 동일한 이름의 바이너리보다 실행 중입니다.