메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

vi 및 Vim 편집기 사용자 정의하기

사용자 정의 명령으로 표준 편집기 확장하기

William von Hagen , 시스템 어드민,작가, WordSmiths
William von Hagen은 20여 년간 UNIX 시스템 관리자로 일하며 다양한 기술적 주제에 관해 집필해왔고, 1993년 이후로는 Linux를 적극 지지하며 활발한 활동을 펼치고 있다. Bill은 Ubuntu Linux, Xen Virtualization, GCC(GNU Compiler Collection), SUSE Linux, Mac OS X, Linux 파일 시스템 및 SGML과 같은 주제에 관한 서적의 저자 또는 공동 저자이기도 하다. Bill은 Linux 및 Mac OS X 관련 출판물과 웹 사이트에 게재된 수많은 기사를 작성하기도 했다. Bill의 이메일 주소는 wvh@vonhagen.org이다.

요약:  vi(시각적) 텍스트 편집기는 모든 UNIX®, Linux® 및 기타 UNIX형 시스템에서 여전히 기본값으로 제공되는 가장 오래된 화면 지향 편집기입니다. 연식과 기본 편집 모델의 일부 조합으로 인해, vi는 항상 이에 합당한 가치를 인정받지 못하지만, 모든 UNIX 및 Linux 관리자가 사용하는 방법을 알아야 하는 엄청나게 빠르고 믿을 수 있는 도구입니다. Vim(vi 개선됨)은 vi의 일반적으로 사용되는 현대적인 복제본이고 다양한 방식으로 vi의 기능을 확장하는 동시에 호환 가능한 상태로 유지됩니다. 이 기사는 간단한 구성 설정에서부터 자체 명령을 정의하는 것까지 vi와 Vim을 여러 방식으로 사용자 정의하는 방법을 설명합니다.

기사 게재일:  2011 년 10 월 05 일
난이도: 중급 원문:  보기 PDF:  A4 and Letter (42KB | 10 pages)Get Adobe® Reader®
페이지뷰:  2278 회
의견:  


vi 텍스트 편집기(또는 유사 복제본)는 1978년 이후로 모든 UNIX 및 UNIX형 시스템의 일부로 포함되었다. AT&T 라이센싱 제한으로 인해 UNIX형 오픈 소스 시스템은 자체적인 vi 복제본을 처음부터 작성해야 했으며, 이는 Elvis, nvi 및 Vim(원본 vi와 함께 이 기사에서 논의된 후자) 등 vi 유사품이 나타났다. 이렇게 도처에 있기 때문에 UNIX, Linux, Berkeley Software Distribution(BSD) 또는 기타 UNIX형 컴퓨터 시스템의 시스템 관리자들이 진정으로 없어서는 안될 도구 중 하나가 된다.

필자를 비롯한 UNIX 및 UNIX형 시스템에서 Emacs 텍스트 편집기 애호가들은 유연성, 확장성 및 구성 가능성 측면에서 만족한다. 이 기사에서는 vi와 가장 대중적인 복제본인 Vim에서 동일한 기능을 강조한다. vi와 Vim 편집기는 근본적으로 Emacs와 동일한 사용자 정의와 구성 가능성을 제공하고 약어에 대한 vi의 지원은 Emacs와 일치하지 않는다. vi를 알면 어느 시스템 관리자나 Emacs를 설치하는 방법을 알아내기 전에 어느 UNIX형 시스템에서나 즉시 생산적이 될 수 있다.

이 기사는 vi와 Vim을 사용하는 방법이 아니라 사용자 정의하는 방법을 설명한다. 훌륭한 vi와 Vim 튜토리얼로의 몇 가지 링크는 참고자료를 참조한다. 그 섹션도 또한 다른 대중적인 vi 복제본과 이를 찾을 수 있는 장소를 나열한다.

vi 및 Vim 사용자 정의의 유형

vi 및 Vim 편집기는 텍스트 파일이나 환경 변수에서 사용자 정의를 저장한다(다음 섹션에서 논의됨). vi 또는 Vim 구성 파일은 각각 표 1과 같이 구성 및 사용자 정의 명령의 유형을 얼마든지 포함할 수 있다.


표 1. 구성 및 사용자 정의 명령
명령설명
ab확장된 약어를 Insert 모드에서 텍스트를 입력하는 동안 직면하는 문자들의 특정 순서로 정의한다. 이러한 약어는 Microsoft® Word에서 AutoCorrect 기능과 같이 작동할 수 있다.
map기존 vi 또는 Vim 명령을 사용자 정의 키로 지정하거나 자체적인 사용자 정의 명령을 정의한다. 자세한 정보는 "키 바인딩 사용자 정의 및 명령 작성"을 참조한다.
setvi 또는 Vim 변수를 설정한다. 변수의 유형 및 사용되는 방법에 따라 변수는 특정 변수를 간단히 이름 지정하거나 명시된 값을 지정하여 설정된다. 자세한 정보는 "vi 및 Vim 구성 옵션 설정"을 참조한다.

구성 명령과 해당 명령 내의 주석을 vi 또는 Vim 구성 파일에 산재시킬 수 있다. Vim 구성 파일에서 행 어디서나 나타나는 큰 따옴표(") 다음의 어느 문자나 주석으로 확인되는 반면, 표준 vi 구성 파일에서 주석은 행의 첫 문자로 큰 따옴표가 있어야 한다. 표준 vi 구성 파일은 빈 행을 포함할 수는 없다. 반면, 이는 Vim 구성 파일에서는 있어도 된다.

Vim 편집기는 원본 vi 편집기에 없는 기능을 활용할 수 있는 추가 키워드를 지원한다. 이러한 예는 표 2와 같이 나타난다.


표 2. Vim으로 지원되는 추가 키워드
키워드설명
autocmd편집 중인 파일 유형에 따라 특정 명령을 자동으로 실행한다. autocmd 예제를 포함한 sample.vimrc 파일은 다운로드를 참조한다.
filetype특정 파일 유형을 편집하고 있을 때 추가 기능을 제공하는 다양한 플러그인을 로드하고 활성화한다.
function핵심 명령으로 맵핑할 수 있는 사용자 정의 함수를 정의한다.
syntax구문 강조표시를 활성화하거나 비활성화한다.

Vim이 사용한 구성 파일도 조건부 표현식을 사용할 수 있는 풍부한 내부 함수 세트를 지원한다. 이를 사용하면 다른 컨텍스트에서 자체 함수를 써서 실행할 수 있다. 이러한 조건에 대한 자세한 정보로의 링크는 참고자료를 참조한다.

vi 및 Vim의 설정 파일

환경 변수, 구성 파일 각각 또는 둘 다에서 이전 섹션에서 논의한 vi 및 Vim 구성 옵션을 정의할 수 있다. vi와 Vim 둘 다 환경 변수 및 구성 파일의 순서를 사용하여 사용자 정의를 로드하고 거의 동일한 구성 순서를 공유한다. 비록 Vim이 더 광범위한 세트를 사용하더라도 말이다.

기본값으로 vi와 Vim 편집기는 구성 정보에 대해 나열된 순서대로 표 3에서 위치를 확인한다.


표 3. 구성 정보에 대한 위치 vi 및 Vim 확인
순서위치설명
1-u 옵션으로 호출되는 특정 파일

(Vim만 해당): -u 옵션 다음에 구성 파일의 이름으로 호출되는 경우, Vim은 나머지 구성 순서를 무시하고 지정된 파일로부터 설정만 로드한다. 모든 구성 파일을 건너뛰기 위해 NONE을 인수로 -u 옵션에 지정할 수 있다.

표준 vi가 EXINIT 환경 변수를 ":set noexrc" 문자열로 설정한 다음 vi를 실행하여 어느 구성 파일이나 로드하는 것을 방지할 수 있다. 다음 예제는 Bash 쉘을 사용하는 중인 경우 다음과 같이 명령행에서부터 이를 수행한다.

EXINIT=":set noexrc" vi file1.txt

2Vim이 컴파일될 때 식별되는 특정 구성 파일(Vim만 해당): Vim에 대한 전체 시스템적인 구성 설정이 들어있는 Vim이 컴파일될 때 식별되는 특정 구성 파일(대개 /etc/vim/vimrc 또는 /usr/share/vim/vimrc). 이 파일은 일반적으로 일부 구성 옵션을 설정하고 실행 중인 운영 체제 및 운영 체제 배포에 특화된 다른 Vim 구성 파일을 로드한다.
3VIMINIT 환경 변수(Vim만 해당): 하나 이상의 구성 명령의 순서를 구성하는 환경 변수. 이 환경 변수가 설정되면, Vim은 차후 구성 파일을 찾거나 다른 환경 변수를 조사하지 않는다.
4 $HOME/.vimrc(Vim만 해당): 구성 옵션이 들어있는 사용자의 홈 디렉토리에 있는 .vimrc라는 파일. 이 파일을 찾으면 Vim은 차후 구성 파일을 찾거나 다른 환경 변수를 조사하지 않는다. sample.vimrc 파일은 다운로드를 참조한다.
5EXINIT 환경 변수하나 이상의 구성 명령의 순서로 구성된 환경 변수.
6$HOME/.exrc구성 옵션이 들어있는 사용자의 홈 디렉토리에 있는 .exrc라는 파일. 이 파일을 찾으면 exrc 옵션이 이 구성 파일에 설정되지 않는 한, vi와 Vim은 차후 구성 파일을 찾지 않는다. sample.exrc 파일은 다운로드를 참조한다.
7.exrc구성 옵션이 들어있는 현재 작업 중인 디렉토리에 있는 .exrc라는 파일. (Microsoft Windows® 시스템에서 Vim을 사용 중인 경우, 이 파일의 이름은 _exrc이다.) 현재 디렉토리의 .exrc 파일은 이전 구성 지시사항 또는 파일이 exrc 옵션을 설정하는 경우 (또는 홈 디렉토리에서 vi 또는 Vim을 시작하는 중이고 .exrc 파일이 거기 있는 경우, 따라서 이는 검색 순서에서 다음 단계와 일치함) 읽기 전용이다.

대안의 이 훌륭한 시리즈는 특히 Vim에 대한 전체 시스템적인 기본값을 구성하기에 간편해지는 한편, Vim과 표준 vi 구성 파일 사이에 일부 영리한 상호 작용도 사용하게 된다. 예를 들어, 필자의 홈 디렉토리가 네트워킹된 파일 시스템에 없을 때마다, 필자는 쉘과 애플리케이션에 대한 필자의 모든 구성 파일을 필자가 계정이 있는 각 시스템에 복사한다. 이러한 일부 시스템은 vi를 사용하는 반면, Vim은 다른 시스템에(vi로) 제공된다. 그러므로 필자는 모든 vi 특화된 구성 옵션을 .exrc 파일에 두고, 모든 Vim 특화된 구성 명령을 .vimrc 파일에 두고, 다음 행을 필자의 .vimrc 파일의 시작부에 둔다.

so .exrc

이렇게 하면 필자의 .vimrc 파일의 나머지에서 구성 명령을 로드하기 전에 Vim이 필자의 .exrc 파일에 저장된 구성 명령을 모두 읽게 된다. vi만 존재하는 시스템에서 필자의 .exrc 파일이 정상적으로 읽히고 .vimrc 파일은 무시된다. .vimrc 파일의 시작 부분에서 구성 명령을 로드하면 필자가 Vim을 사용할 때보다 더 세련된 Vim 버전으로 오버라이드되는 두 파일 모두에 존재하는 키 맵핑을 사용할 수 있다.

vi 및 Vim 구성 옵션 설정

set 명령을 통해 사용자는 내부 vi 및 Vim 변수를 설정할 수 있다. 변수는 다음과 같이 유형에 따라 다른 방식으로 설정된다.

  • 켜짐 또는 꺼짐으로 설정되는 변수는 set variable 명령으로 설정되고 set novariable 명령을 사용하여 설정 해제된다.
  • 값을 취하는 변수는 set variable=value 명령으로 설정된다.

예를 들어, set list 명령은 목록 옵션을 설정하며, 이는 vi 또는 Vim에 행의 끝 부분을 표현하는 문자($)와 축소된 탭(^I) 문자를 표시하도록 알려준다. (Vim에서 이 옵션은 후미 공백도 표시한다.) list 옵션은 값이 필요하지 않다—설정하는 것만으로도 기능이 활성화되기에 충분하다. set nolist 명령을 실행하여 list 옵션을 설정 해제할 수 있다.

다른 변수는 명시적인 값 또는 값의 유형을 취하며, 이는 등호 기호(=) 다음에 값 또는 콤마로 분리된 값의 목록을 사용하여 지정한다. 예를 들어, Vim 편집기에서 listchars 변수의 값을 설정하여 행의 끝 부분, 후미 공백 및 축소된 탭을 표현하기 위해 list 명령이 사용하는 문자를 구성할 수 있다. 다음 명령은 축소된 탭을 >>로, 후미 공백을 !로, 행의 끝 부분을 $로 표시한다.

set listchars=tab:>>,trail:!,eol:$

vi 또는 Vim에서 설정할 수 있는 모든 옵션의 현재 값을 확인하려면 vi 또는 Vim 내에서 :set all 명령을 사용한다. 특정 옵션의 현재 값을 표시하려면 f:set option? 명령을 사용한다. 기본값에서부터 수정한 옵션을 모두 표시하려면 :set 명령을 사용한다.

키 바인딩 사용자 정의 및 명령 작성

map 명령을 사용하면 사용자는 특정 키 또는 vi의 명령 모드에 대해 map key-sequence command 구문 및 vi의 삽입 모드에 대해 map! key-sequence command 구문을 사용하는 키 결합으로 기존 명령 또는 새 명령을 바인드할 수 있다.

다음은 Vim에 대한 일부 샘플 map 명령이다.

map <C-T> hhxp
map <F5> !}fmt <CR>

이 중 첫 번째는 키 순서 control-t를 vi 명령 순서 hhxp로 맵핑하며, 이는 현재 커서 위치의 앞에 두 문자의 순서를 역전한다(Emacs에서 control-t를 수행하는 것처럼). 이 중 두 번째는 F5 키를 fmt 명령을 호출하는 키 순서로 맵핑하여 현재 단락을 다시 포맷한다.

표준 vi 및 Vim에 대한 구성 파일에서 map 명령 사이의 중요한 차이점 중 하나는 이전 예제에서 나온 것처럼 Vim은 꺾쇠괄호 내에서 키 식별자를 지원하여 그렇지 않으면 인쇄 가능하지 않은 문자가 될 키를 식별한다. vi는 실제로 제어 순서를 삽입하도록 요구한다(이는 control-v를 누른 다음에 키 순서로 이어져 수행함). 샘플 map 명령의 vi 버전은 다음과 같다.

map ^T hhxp
map ^@ !}fmt ^M

약어 정의

ab 명령을 사용하면 길지만 일반적으로 사용되는 용어, 코드의 비트, 철자법 수정 및 기타 등등에 대한 약어를 식별할 수 있다. 독자가 정의한 약어는 공백 또는 맞춤법 문자를 입력할 때마다 삽입 모드에서 텍스트를 입력하면 확장된다. 예를 들어, 필자가 선호하는 몇 가지 약어는 다음과 같다.

ab het the
ab teh the

약어는 표준 vi에서 삽입 모드에서만 작동하지만 Vim에서 대체 모드 및 명령행 모드에서도 작동한다. Vim 편집기는 cab(명령행 약어), iab(삽입 모드 약어) 및 rab(대체 모드 약어) 명령을 제공하여 Vim에서 특정 모드에서 특정 약어의 확장을 제한할 수 있다.

요약

vi와 Vim 편집기를 사용하는 방법을 아는 것은 UNIX, Linux 또는 다른 UNIX형 시스템의 어느 관리자에게나 기초적인 기술이다. vi는 고전적인 UNIX 도구이지만 고도로 구성 가능하고 많은 개발자들이 일상적인 작업에 사용될 뿐만 아니라 vi가 사용 가능한 유일한 편집기인 시스템에서도 사용된다.

이 기사는 기본 vi 및 Vim 구성 명령을 소개했고 vi와 Vim이 사용자 정의된 구성 설정을 찾고 로드하는 방법의 개요를 제공했다. 하나의 기사에 적합할 수 있는 것보다 이러한 주제에 대해 배워야 할 내용이 훨씬 더 많다. 자세한 정보를 확인할 수 있는 링크는 참고자료를 참조한다.



다운로드 하십시오

설명이름크기다운로드 방식
Sample .vimrc filesample.vimrc3KBHTTP
Sample .exrc filesample.exrc1KBHTTP

다운로드 방식에 대한 정보


참고자료

교육

제품 및 기술

토론

필자소개

William von Hagen은 20여 년간 UNIX 시스템 관리자로 일하며 다양한 기술적 주제에 관해 집필해왔고, 1993년 이후로는 Linux를 적극 지지하며 활발한 활동을 펼치고 있다. Bill은 Ubuntu Linux, Xen Virtualization, GCC(GNU Compiler Collection), SUSE Linux, Mac OS X, Linux 파일 시스템 및 SGML과 같은 주제에 관한 서적의 저자 또는 공동 저자이기도 하다. Bill은 Linux 및 Mac OS X 관련 출판물과 웹 사이트에 게재된 수많은 기사를 작성하기도 했다. Bill의 이메일 주소는 wvh@vonhagen.org이다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=AIX와 UNIX, 오픈 소스
ArticleID=763480
ArticleTitle=vi 및 Vim 편집기 사용자 정의하기
publish-date=10052011

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.