Mare!
Oram의 프로그래밍과 일본
Mare!
전체 방문자
오늘
어제
  • 분류 전체보기
    • 프로그래밍
      • 기타 정보
    • 잡담
      • 학교
    • 정보
    • ㅇㅇ

블로그 메뉴

  • 홈
  • 방명록
  • 관리자
  • 전체보기

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Mare!

Oram의 프로그래밍과 일본

프로그래밍/기타 정보

Vim으로 외부명령어 실행하기

2020. 10. 5. 18:36

쉘로 빠져나가기vim은 매우 강력하지만 또한 그만큼 복잡한 에디터이기도 하다. vim의 강력함을 제대로 이해하려면 수많은 숨겨진 기능들을 익혀야 한다. 이 문서는 이러한 숨겨진(혹은 잘 알려지지 않은)기능중 외부명령어를 실행하는 방법에 대해서 알아보도록 하겠다. vim은 단순히 외부명령을 실행시키는 외에도, 다양한 일들을 할 수 있다.:shell 혹은 :sh를 이용해서 shell(:12)로 빠져나갈 수 있다. exit 혹은 Ctrl+D를 이용해서 vim으로 되돌아올 수 있다.또한 Ctrl+z를 이용해서 쉘로 빠져나갈 수 있다. 이경우 Vim은 백그라운드 상태가 되는데, fg 명령을 이용해서 vim으로 되돌아갈 수 있다(븍그라우드로 빠져나가는 기능은 쉘에서 지원하는 기능이다.).

쉘로 빠져나가지 않고 외부명령어 실행

또한 vim은 쉘로 빠져나가지 않고서도 느낌표 (!)를 이용해서 쉘명령을 실행시킬 수 있다.

 

 

:! wc index.html

 

 

wc 는 문서의 단어와 라인수를 구하는 프로그램이다. 위와 같은 방법으로 굳이 쉘로 빠져나가지 않고서도 index.html파일의 단어와 라인수를 조사할 수 있다. 또다른 응용으로, 여러분이 Perl등의 스크립트를 작성하고 있을 때, vim에서 스크립트가 제대로 작성되었는지 직접확인 할 수도 있다. my.pl이라는 Perl 스크립트를 만들었다면, 다음과 같이 Vim 상에서 테스트 가능하다.

 

:! ./% 혹은 :! ./my.pl

 

 

%는 자기자신을 가리킬때 사용한다. 이렇게 해서 스크립트를 만들게 되면, 필요할 때 즉시 테스트를 할 수 있다. 다음과 같이 하면 가장 최근에 실행한 명령을 재 실행하게 된다. 타이핑에 걸리는 시간을 절약할 수 있을 것이다.

 

:! !

 

 

명령어 실행결과를 출력하기

느낌표를 사용하면 간편하게 명령을 실행할 수 있지만, 명령의 실행결과가 쉘에 표준출력 되어버린다는 문제가 발생한다. 이럴경우 출력결과물을 편집기에 불러오려면, 마우스를 이용한 copy & paste를 해야 한다. 다행 스럽게도 Vim은 표준출력(:12)을 에디터에 바로 복사하는 기능을 가지고 있다.

 

:r ! ls -al /home/yundream

 

 

위와 같이 하면 ls -al /home/yundream 명령의 실행결과가 vim 에디터 화면에 저장이 된다. 이 기능을 잘 이용하면 웹페이지의 내용을 쉽게 긁어와서 편집할 수도 있다.

 

:r ! w3m http://en.wikipedia.org/wiki/Vi -dump

 

 

w3m(:12)은 텍스트 기반 브라우저다. -dump 옵션을 이용하면 브라우징한 웹페이지의 내용을 화면에 뿌려주게 되는데, 위와 같은 방식으로 vim에디터로 내용을 직접 불러와서 편집할 수 있다.뿐만 아니라 pipe(:12)의 사용도 가능하다.

 

:r ! ls -1 /home/yundream | sort(:1) -r

 

 

다음과 같이 grep한내용을 에디터로 불러오는 식의 응용은 유용하게 사용할 수 있을 것이다.

 

:r ! grep string /var/log/apache2/site-error.log

 

 

쉘 바꾸기

당신이 리눅스 사용자라면 아마도 bash쉘을 사용하고 있을 것이다. 그러나 쉘을 바꾸고 싶은 경우가 생길 수 있다. 우선은 현재 사용중인 쉘을 확인해야 할건데, 다음과 같이 확인 가능하다.

 

:set shell ?

 

 

그러면 Vim은 shell=/bin/bash 와 같은 출력결과를 보여줄 것이다. 만약 bash대신 csh를 사용하고 싶다면, 다음과 같이 하면 된다.

booolean.tistory.com/837?category=627838

'프로그래밍 > 기타 정보' 카테고리의 다른 글

Git COMMIT(커밋) 메시지 작성 팁  (1) 2020.10.27
overleaf latex에서 일본어로 글 작성  (0) 2020.10.23
Vim - 같은 명령 반복하는 매크로 기능  (0) 2020.10.05
Vim Vi 타이밍별 다중창과 탭  (0) 2020.10.05
    '프로그래밍/기타 정보' 카테고리의 다른 글
    • Git COMMIT(커밋) 메시지 작성 팁
    • overleaf latex에서 일본어로 글 작성
    • Vim - 같은 명령 반복하는 매크로 기능
    • Vim Vi 타이밍별 다중창과 탭
    Mare!
    Mare!
    情報工学科(정보공학과) 재학중 일본생활, 일본어, 프로그래밍

    티스토리툴바