*usr_20.txt* Vim version 7.4 대상. 새로 고침: 2006년 4월 24일 VIM 사용설명서 - Bram Moolenaar 저 정지용 역 명령줄 명령 빨리 치기 Vim은 명령을 쉽게 입력하는데 통용되는 몇 가지 기능을 갖고 있습니다. 콜론 명령은 줄여서 쓰거나, 편집하거나 반복할 수 있습니다. 그리고 거의 모든 곳에서 자동완성을 사용할 수 있습니다. |20.1| 명령줄 편집하기 |20.2| 명령줄 약어 |20.3| 명령줄 자동 완성 |20.4| 명령줄 히스토리 |20.5| 명령줄 창 다음 장: |usr_21| 나갔다가 되돌아오기 이전 장: |usr_12| 멋진 기술들 차례: |usr_toc|
*20.1* 명령줄 편집하기 콜론(:) 명령이나 / 또는 ?로 문자열을 찾으면, Vim은 커서를 화면의 맨 밑으로 옮깁니다. 여기서 명령이나 찾을 패턴을 입력하지요. 이 부분을 명령줄(Command Line)이라고 부릅니다. 찾기 명령을 입력할 때도요. 명령을 편집하는 가장 빤한 방법은<BS>(백스페이스) 키를 누르는 것입니다. 커서 앞의 글자를 지우지요. 그 전에 입력한 다른 문자를 지우려면, 커서를 화살표 키로 먼저 움직인 후 지우면 됩니다. 예를 들어, 다음과 같이 입력했다면::s/col/pig/그런데<Enter>를 누르기 전에 "cow"를 "col"라고 잘못 친 것을 발견했다고 합시다. 이걸 고치려면<Left>(왼쪽 화살표 키)를 다섯 번 누르세요. 이제 커서가 "col" 바로 다음에 왔을 텐데요.<BS>를 누르고 "w"를 눌러서 다음과 같이 고치세요::s/cow/pig/이제 바로<Enter>를 누르면 됩니다. 명령을 실행하기 전 커서를 맨 끝으로 옮길 필요는 없습니다. 명령줄에서 움직일 때 가장 많이 사용하는 키는 다음과 같습니다:<Left>(왼쪽 화살표 키) 한 글자 왼쪽으로<Right>(오른쪽 화살표 키) 한 글자 오른쪽으로<S-Left>또는<C-Left>한 어절 왼쪽으로<S-Right>또는<C-Right>한 어절 오른쪽으로CTRL-B또는<Home>명령줄의 맨 처음으로CTRL-E또는<End>명령줄의 맨 끝으로Note:<S-Left>(시프트키를 누른 채로 왼쪽 화살표 키)와<C-Left>(컨트롤키를 누른 채로 왼쪽 화살표 키)는 모든 키보드에서 동작하지는 않을 수도 있습니다. 다른 시프트키나 컨트롤키 조합도 마찬가지입니다. 마우스를 이용해서 커서를 움직일 수도 있습니다. 지우기 ------ 앞에서 언급했듯이,<BS>(백스페이스)는 커서 앞의 글자 하나를 지웁니다. 어절(word) 하나를 통째로 지우려면CTRL-W를 사용하세요./the fine pigCTRL-W/the fineCTRL-U는 전체를 지웁니다. 처음부터 다시 입력하고 싶을 때 사용하세요. 수정하기 --------<Insert>키를 누르면 문자 삽입하기 상태와 수정하기 상태를 오갑니다. 다음 문자열이 있다고 해보지요:/the fine pig<S-Left>를 두 번 눌러서(<S-Left>가 동작하지 않는다면<Left>를 여덟 번 눌러서) 커서를 "fine"의 시작 위치로 옮깁시다. 이제<Insert>를 눌러서 수정하기 상태로 바꾸고 "great"를 입력합시다:/the greatpig앗, 공백이 없어졌습니다. 이때<BS>를 사용하지는 마세요. "t"가 지워져 버립니다(바꾸기 모드와 동작이 다릅니다). 대신,<Insert>를 눌러서 수정하기에서 삽입하기 상태로 바꾼 다음, 스페이스바를 누르세요:/the great pig취소하기 -------- 콜론 명령이나 찾기를 하려다가, 생각이 바뀌어 그만두고 싶어졌다고 합시다. 지금까지 입력한 내용을 실행하지 않고 그만두려면CTRL-C나<Esc>를 누르세요.Note:<Esc>는 어디에서나 쓰이는 "나가기" 키입니다. 하지만 불행하게도 위대한 옛날 Vi에서는 명령줄에서<Esc>를 누르면 명령이 실행됩니다! 이는 버그라고 생각할 수 있기 때문에 Vim에서는<Esc>를 명령 취소로 쓰고 있습니다. 하지만 'cpoptions' 옵션으로 Vi와 동일하게 동작하도록 바꿀 수 있습니다. 또한 매핑(Vi에 맞추어 쓰였을 수도 있는)을 사용할 때는<Esc>가 Vi와 동일하게 동작합니다. 따라서CTRL-C를 써야 언제나 잘 동작합니다. 명령줄의 맨 앞에서<BS>를 눌러도 명령이 취소됩니다. 줄이 시작하는 ":"나 "/"를 지우는 것과 같으니까요.
*20.2* 명령줄 약어 몇 가지 ":" 명령은 매우 깁니다. 앞에서 ":substitute"를 ":s"로 줄여서 쓸 수 있다는 것은 이야기 했습니다. 이는 일반적인 방식으로, 모든 ":" 명령을 줄여서 쓸 수 있습니다. 명령이 얼마나 짧아질 수 있을까요? 알파벳은 26글자이고, 명령은 이보다 훨씬 많습니다. 예를 들어, ":set"도 ":s"로 시작하지만 ":s"는 ":set" 명령으로 동작하지 않습니다. 대신 ":set"은 ":se"로 줄여서 쓸 수 있습니다. 명령의 짧은 형태가 두 가지 명령을 의미할 수 있을 때, 실제로는 언제나 그 중 한 가지만을 의미합니다. 어떤 것을 의미하는지에 대한 규칙은 없고, 그냥 외워야 합니다. 명령의 도움말에 동작하는 가장 짧은 형태가 나옵니다. 예를 들어::s[ubstitute]위와 같이 나와 있다면 ":substitute"의 가장 짧은 형태가 ":s"라는 것입니다. 뒤에 나오는 문자들은 생략 가능합니다. 따라서 ":su"나 ":sub"도 동작합니다. 사용설명서에서는 명령 전체를 쓰거나, 읽어서 이해하기 쉬운 짧은 형태를 사용합니다. 예를 들어 ":function"은 ":fu"로 줄여 쓸 수 있습니다. 하지만 대부분의 사람들은 이것이 어떤 명령을 줄인 것인지 알기 어려우므로, ":fun"을 사용하고 있습니다. (Vim에는 ":funny"같은 명령은 없으니까요. 그렇지 않았다면 ":fun"도 헷갈렸겠지요). Vim 스크립트에서는 명령 전체를 쓰는 것을 추천합니다. 나중에 수정할 일이 생기더라도 읽기가 더 쉬울 테니까요. ":w" (":write")나 ":r" (":read") 같이 자주 쓰는 것들은 빼고요. 특히 헷갈리는 것은 ":end" 입니다. ":endif"일 수도 있고, ":endwhile"이나 ":endfunction"으로 생각할 수도 있습니다. 따라서 언제나 전체를 써주세요. 짧은 옵션 이름 -------------- 사용설명서에서는 긴 옵션 이름을 사용합니다. 많은 옵션들은 짧은 이름도 갖고 있습니다. ":" 명령과 달리 단 하나의 짧은 이름만 쓸 수 있습니다. 예를 들어 'autoindent'의 짧은 이름은 'ai'입니다. 즉 다음 두 명령은 동일합니다::set autoindent:set ai모든 옵션들의 전체 이름과 짧은 이름들은 |option-list|에서 확인할 수 있습니다.
*20.3* 명령줄 자동 완성 명령줄 자동 완성은 Vi에서 Vim으로 바꿔야하는 이유 중 하나인 기능입니다. 한 번 사용해보면, 자동 완성 없이는 살 수 없을 거예요. 다음 파일들을 갖고 있는 디렉터리가 있다고 합시다: info.txt intro.txt bodyofthepaper.txt 마지막 파일을 편집하려면 다음 명령을 사용하면 됩니다::edit bodyofthepaper.txt타자 실수를 하기 쉽겠지요. 훨씬 더 편한 방법은::edit b<Tab>이러면 동일한 명령이 됩니다. 무슨 일이 일어난 걸까요?<Tab>키가 커서 앞의 내용을 끝까지 완성시켜주었습니다. 여기서는 "b"였지요. Vim은 디렉터리를 살펴본 후, "b"로 시작하는 파일이 하나밖에 없다는 것을 알아냈습니다. 당신이 찾는 파일이 이 파일일 테니 Vim은 파일명을 완성시켜준 겁니다. 이제 다음과 같이 입력해봅시다::edit i<Tab>Vim은 삐 소리를 내며 다음과 같은 화면을 보여줄 겁니다::edit info.txt삐 소리는 Vim이 둘 이상의 일치하는 파일을 찾았다는 뜻입니다. 그리고는 일치하는 파일 중 첫 번째 것(알파벳 순)을 사용한 것입니다.<Tab>을 다시 누르면, 다음과 같아집니다::edit intro.txt즉 첫 번째<Tab>으로 원하는 파일이 나오지 않았다면, 다시 눌러보세요. 일치하는 파일이 더 있다면, 한 번에 하나씩 차례대로 모두 나올 겁니다. 일치하는 마지막 파일이 나온 후에<Tab>을 또 누르면, 처음 입력한 내용으로 돌아갑니다::edit i그리고는 처음부터 다시 반복됩니다. 즉 Vim은 일치하는 파일들을 순환합니다. 순환하는 목록에서 반대 방향으로 가려면CTRL-P를 사용하세요:<------------------- <Tab>-------------------------+ |<Tab>--><Tab>--> :edit i :edit info.txt :edit intro.txt <--CTRL-P<--CTRL-P| +----------------------CTRL-P------------------------> 문맥 ----- ":edit i" 대신 ":set i"를 입력하고<Tab>을 누르면 다음과 같이 됩니다::set icon아니, ":set info.txt"가 아니네요? Vim이 문맥을 고려해서 자동 완성을 하기 때문입니다. Vim이 완성에 사용하는 단어는 그 앞의 명령에 따라 달라집니다. Vim은 ":set" 명령 다음에는 파일명이 나오지 않고, 대신 옵션 이름이 나온다는 것을 알고 있습니다. 앞에서와 마찬가지로<Tab>을 반복해서 누르면, Vim은 일치하는 옵션들을 순환합니다. 일치하는 수가 꽤 많으니 몇 글자를 더 입력하는 것이 낫겠네요::set isk<Tab>결과는::set iskeyword이제 "="를 입력하고<Tab>을 눌러봅시다::set iskeyword=@,48-57,_,192-255이때는 Vim이 옵션의 기존 값을 넣어줍니다. 이제 이걸 적당히 편집하면 됩니다.<Tab>으로 완성되는 것은 Vim이 그 자리에서 기대하는 것입니다. 어떻게 동작하는지 보려면 일단 한번 해보세요. 몇몇 상황에서는 기대하는 결과가 나오지 않을 수도 있습니다. 이는 Vim이 당신의 의도를 잘 몰랐거나, 아니면 그런 상황에서의 자동 완성이 구현되지 않아서일 겁니다. 그런 경우<Tab>이 그냥 입력됩니다(^I로 표시됩니다). 일치하는 후보들 보기 -------------------- 일치하는 후보가 여럿 있다면, 전체를 한번 보고 싶을 수도 있습니다.CTRL-D를 누르면 됩니다. 예를 들어 다음과 같이 입력하고CTRL-D를 누르면::set is다음과 같이 나옵니다::set isincsearch isfname isident iskeyword isprint:set is일치하는 후보들이 나온 후, 입력한 내용으로 돌아갑니다. 이제 후보들에서 원하는 것을 찾으면 되겠지요. 만약 원하는 것이 없다면,<BS>를 눌러서 입력을 수정할 수도 있습니다. 후보가 너무 많다면 몇 글자를 더 입력한 후<Tab>을 눌러서 완성하세요. 위 내용을 주의 깊게 보았다면, "incsearch"가 "is"로 시작하지 않는다는 것을 눈치 챘을 겁니다. 위 예에서 "is"는 "incsearch"의 짧은 이름입니다. (많은 옵션들은 긴 이름과 짧은 이름을 가지고 있습니다.) Vim은 영특하게도 옵션의 짧은 이름을 긴 이름으로 바꾸고 싶어 했을 거라고 추측하고 후보에 넣은 것이지요. 이 뿐만이 아닙니다 ------------------CTRL-L으로 단어를 확실한 부분까지만 완성시킬 수 있습니다. ":edit i"를 입력하고CTRL-L을 눌렀는데 파일이 "info.txt"와 "info_backup.txt"밖에 없다면, ":edit info"가 됩니다. 'wildmode' 옵션으로 자동 완성의 동작 방식을 바꿀 수 있습니다. 'wildmenu' 옵션으로 메뉴 형태의 후보 목록을 볼 수 있습니다. 'suffixes' 옵션으로 덜 중요하므로 파일 목록의 맨 마지막에 나올 파일들을 지정할 수 있습니다. 'wildignore' 옵션으로 아예 목록에서 뺄 파일을 지정할 수도 있습니다. 이 모든 것에 대해 더 자세한 내용은 |cmdline-completion|에서 확인하세요.
*20.4* 명령줄 히스토리 3장에서 히스토리에 대하여 간단히 살펴봤습니다. 기본은<Up>(위쪽 화살표 키)으로 예전 명령줄 내용을 불러낼 수 있다는 것입니다.<Down>(아래쪽 화살표 키)으로 다시 더 최근 명령으로 돌아갈 수도 있고요. 사실, Vim에는 네 가지 히스토리가 있습니다. 여기서 살펴볼 것은 ":" 명령 히스토리와 "/", "?" 찾기 명령을 위한 히스토리입니다. "/"와 "?"는 같은 히스토리를 공유합니다. 둘 다 같은 찾기 명령이니까요. 다른 두 가지 히스토리는 표현식과 input() 함수의 입력 내용을 위한 것입니다. |cmdline-history| ":set" 명령을 실행하고 난 후 다른 콜론 명령을 열 개 입력했고, ":set" 명령을 다시 반복하고 싶다고 합시다. ":"를 누른 후<Up>을 열 번 누를 수도 있습니다. 하지만 더 빠른 방법이 있습니다::se<Up>Vim은 "se"로 시작하는 이전 명령으로 돌아갑니다. 운이 좋다면 찾고 있는 ":set" 명령을 바로 찾을 수 있을 겁니다. 최소한<Up>을 아주 많이 누를 필요는 없어지겠지요(":set" 명령만 줄곧 사용하는 것이 아니라면 요).<Up>키는 현재까지 입력된 내용을 히스토리의 항목들과 비교할 겁니다. 일치하는 항목들만 사용됩니다. 만약 원하는 항목을 찾을 수 없다면,<Down>키를 눌러서 입력한 내용으로 돌아간 다음 수정하십시오. 아니면CTRL-U를 누르고 처음부터 다시 시작하세요. 히스토리의 모든 항목을 보려면::history이건 ":" 명령의 히스토리입니다. 찾기 히스토리는 다음 명령으로 볼 수 있습니다::history /CTRL-P는<Up>과 유사하지만, 현재 입력중인 내용을 무시한다는 차이가 있습니다.CTRL-N과<Down>도 동일한 관계입니다.CTRL-P는 이전(Previous)을,CTRL-N은 다음(Next)을 의미합니다.
*20.5* 명령줄 창 명령줄에 명령을 입력하는 것은 입력 모드에서 내용을 입력하는 것과 다릅니다. 편집을 위한 많은 명령들을 쓸 수 없습니다. 대부분의 명령을 사용하는 데는 문제가 없지만, 가끔 복잡한 명령을 입력해야할 때가 있습니다. 이때는 명령줄 창이 유용합니다. 명령줄 창을 아래 명령으로 여세요:q:Vim은 아래쪽에 (작은) 창을 엽니다. 여기에는 명령줄 히스토리와 함께 맨 끝에 빈 줄이 있습니다: +-------------------------------------+ |다른 창| |~| |file=============================| |:e c| |:e config.h.in| |:set path=.,/usr/include,,| |:set iskeyword=@,48-57,_,192-255| |:set is| |:q| |:| |명령줄===============================| || +-------------------------------------+ Vim은 이제 보통 모드입니다. "hjkl"을 써서 움직일 수 있습니다. 예를 들어, "5k"로 ":e config.h.in" 줄로 올라가 보세요. "$h"를 눌러서 "in"의 "i"로 움직인 다음 "cwout"를 입력하세요. 이제 다음과 같이 내용이 바뀌었을 겁니다::e config.h.out이제<Enter>를 누르면 이 명령이 실행됩니다. 명령줄 창도 닫힙니다.<Enter>명령은 커서가 위치한 줄의 명령을 실행시킵니다. Vim이 입력 모드이든 보통 모드이든 상관없습니다. 명령줄 창의 변경 사항은 사라집니다. 히스토리가 바뀌지도 않습니다. 단지 실행한 명령이 히스토리의 맨 끝에 추가될 겁니다. 다른 명령을 실행했을 때와 마찬가지로요. 명령줄 창은 히스토리 전체를 보고, 비슷한 명령을 찾아서 약간 바꾼 다음 실행시킬 때 매우 유용합니다. 찾기 명령으로 무언가를 찾을 수도 있습니다. 위 예에서 "?config" 찾기 명령으로 "config"를 포함한 이전의 명령을 찾을 수 있었을 겁니다. 명령줄 창에서 찾기를 하기 위해 명령줄을 또 사용하는 것은 약간 이상하지요. 찾기 명령을 입력하는 중에는 또 다른 명령줄 창을 열 수 없습니다. 명령줄 창은 딱 하나만 있을 수 있습니다.
다음 장: |usr_21| 나갔다가 되돌아오기 저작권: |manual-copyright| 참고 vim:tw=78:ts=8:ft=help:norl:
Generated by vim2html on 2013. 12. 14. (토) 20:47:01 KST