USR_20

*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 pig 

		     CTRL-W

	/the fine 

CTRL-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 is
	incsearch  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