2013-07-03 3 views
6

Vim 스크립트에서 외부 명령을 실행하고 싶지만 어떻게해야합니까? 예를 들어 chmod 명령을 사용하여 파일 사용 권한을 변경해야합니다 (응용 프로그램이 명령을 실행할 수있는 충분한 권한이 있다고 가정하십시오).Vim 스크립트에서 외부 명령을 실행하는 방법은 무엇입니까?

이것을 수행 할 수있는 방법이 있습니까?

+1

[vimscript를 통해 셸 명령을 실행하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/10766033/how-to-run-a-shell-command-through-vimscript) –

답변

7

사용자가 출력을 보거나 명령과 상호 작용하도록하려면 :!이 올바른 명령입니다. 자동 실행 (사용자의 chmod이 필요하다고 가정)은 system()을 사용하는 것이 좋습니다. 특히 Windows에서는 수동으로 해제해야하는 명령 프롬프트의 팝업을 방지합니다.

:call system('chmod +x ' . shellescape(fname)) 
+0

좋은 해결책. 호출 시스템()의 결과를 얻고 사용자에게 수동으로 표시 할 수있는 방법이 있습니까? 예를 들어 Vim의 echo() 명령을 통해. –

+2

출력을 리턴하고 종료 상태는'v : shell_error'입니다. ': help system()'은 여러분의 친구입니다 :-) –

6

:! vim 명령을 사용할 수 있습니다. 예를 들어, 정력 내부에서 echo 'Hello, World!' 정력에

:! echo 'Hello, World\!' 

(따라서 또한, 정력 스크립트 내에서). 또는 vim 스크립트에서 그냥 넣을 수 있습니다.

! echo 'Hello, World\!' 

! vim이 특별한 처리를 수행하기 때문입니다! a의 인수에있는 문자! 명령. 어떤 명령어도 포함하고 있지 않다면! 문자를 사용하면 이스케이프 처리 할 필요가 없습니다. 당신이 이것에 대해 깊이 더 읽고 싶다면 @FDinoff 말했듯이

, 당신은 정력에

:help :! 

를 입력 할 수 있습니다.

+0

': h :! '를 보자. – FDinoff

2

내 선호하는 방법은 당신이 쉘에서 원하는 무엇이든 할 수 Ctrl-z를 밀거나 정력 과정을 중단 :sus를 실행하는 것입니다.

끝나면 vim 세션을 다시 시작하려면 fg (전경)을 실행하십시오.

자세한 내용은 here을 참조하십시오.

관련 문제