Vim 사용법 · 2 min read · Nov 16, 2025
Vim 내에서 셸에 접근하거나 외부 명령 실행하는 방법

Vim은 여러분이 이미 알고 있을지도 모르는 기능이 풍부하고 강력한 편집기입니다. HowtoForge에서는 Vim의 기본 사용법, 플러그인 및 기타 유용한 기능을 다룬 여러 튜토리얼을 작성했습니다. 그러나 Vim이 제공하는 다양한 기능을 고려할 때, 우리는 항상 독자와 공유할 유용한 내용을 찾습니다.
이 튜토리얼에서는 편집기 창 내에서 외부 명령을 실행하고 명령 줄 셸에 접근하는 방법에 집중할 것입니다.
Vim에서 외부 명령 실행하기
때때로 Vim 편집기 창 내에서 외부 명령을 실행하고 싶을 수 있습니다. 예를 들어, Vim에서 파일을 열고 몇 가지 변경을 한 후, 변경 사항을 저장하려고 할 때 Vim이 충분한 권한이 없다는 오류를 발생시킬 수 있습니다.
현재 vim 세션을 종료하고 충분한 권한으로 파일을 다시 열면 지금까지 한 모든 변경 사항이 손실되므로, 대부분의 경우 이는 선택 사항이 아닐 것입니다. 편집기 내에서 외부 명령을 실행할 수 있는 능력이 유용하게 작용하는 상황이 바로 이런 경우입니다.
위의 사용 사례로 돌아가겠지만(), 지금은 Vim 내에서 기본 명령을 실행하는 방법을 이해해 봅시다.
파일을 편집하는 동안 파일에 포함된 줄 수, 단어 수 및 문자 수를 알고 싶다고 가정해 보겠습니다. 이를 위해 Vim의 명령 모드에서 콜론(:) 다음에 느낌표(!)를 입력하고 마지막으로 명령(‘wc’인 경우)과 파일 이름(현재 파일에는 % 사용)을 입력하면 됩니다.
:! wc %다음은 예시입니다:
위의 명령이 실행될 준비가 된 파일:

그리고 터미널에서의 출력:
출력을 본 후 Enter 키를 누르면 Vim 세션으로 돌아갑니다.
이 기능은 예를 들어 코드를 작성하거나 스크립트를 작성하는 상황에서 코드/스크립트에 컴파일 시간 또는 구문 오류가 있는지 빠르게 확인하고 싶을 때 매우 유용할 수 있습니다.
계속해서, 출력 결과를 파일에 추가해야 하는 경우 ‘:read !’ 명령을 사용하세요. 다음은 예시입니다:
:read ! wc %‘read’ 명령은 외부 명령의 출력을 현재 편집 중인 파일의 현재 줄 아래에 새 줄로 삽입합니다. 원하시면 특정 줄 번호를 지정할 수도 있으며, 출력은 해당 줄 다음에 추가됩니다.
예를 들어, 다음 명령은 파일의 두 번째 줄 다음에 ‘wc’의 출력을 추가합니다.
:2read ! wc %참고: 마지막 줄 다음에 삽입하려면 ‘$’를 사용하고 첫 번째 줄 이전에 삽입하려면 ‘0’을 사용하세요.
이제 처음에 논의한 사용 사례로 돌아가서(), 파일을 먼저 닫지 않고 저장할 수 있는 명령은 다음과 같습니다(즉, 저장되지 않은 변경 사항 손실 없음) 그리고 sudo로 열 수 있습니다.
:w ! sudo tee %
Vim에서 셸 접근하기
개별 명령을 실행하는 것 외에도 Vim 내에서 새로 시작된 셸에 들어갈 수 있습니다. 이를 위해 편집기에서 다음 명령을 실행하기만 하면 됩니다:
:shell또는
:sh작업이 끝나면 ‘exit’를 입력하면 처음에 나왔던 Vim 세션으로 돌아갑니다.
염두에 두어야 할 허점
셸에 접근할 수 있는 능력은 실제 세계에서 확실히 유용하지만, 권한 상승 기술로도 사용될 수 있습니다. 이전 튜토리얼(즉, sudoedit)에서 설명했듯이, 사용자가 Vim을 통해 단일 파일만 편집할 수 있도록 sudo 접근 권한을 부여하더라도, 이 기술을 사용하여 편집기 내에서 새 셸을 시작할 수 있으며, 이후 ‘root’ 또는 슈퍼유저로서 무엇이든 할 수 있습니다.
Vim 내에서 외부 명령을 실행할 수 있는 능력은 많은 상황에서 유용하게 작용할 수 있는 중요한 기능입니다(이 튜토리얼에서 언급한 몇 가지 상황 포함). 이 기능의 학습 곡선은 가파르지 않으므로 초보자와 숙련된 사용자 모두가 이를 활용할 수 있습니다.
이 기능을 꽤 오랫동안 사용해 오셨나요? 공유할 내용이 있으신가요? 아래 댓글에 여러분의 생각을 남겨주세요. 아마도 여러분은 Linux tee 명령에도 관심이 있을 것입니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.