본문 바로가기
CS

[Linux] vim editor 자동완성 활용하기

by Warehaus 2021. 8. 23.

Vim 사용하다 보면 하나하나 타이핑 한다거나 복사해서 붙여넣기가 여간 불편하다.

Visual Studio나 VS Code 등등 각종 에디터에서 Syntax check나 자동완성을 해주는데, 이런게 없는 vim은 참 답답하기 그지없다.

그래도 나름 파일 내 키워드 기반으로 유사키워드를 자동완성해주는 기능이 있는데,
예전에 알아두고는 자주 쓰지 않았던걸 다시 검색하기가 귀찮아서 내가 쓰는 기능만 정리했다.

CTRL-P			Find previous match for words that start with the
			keyword in front of the cursor, looking in places
			specified with the 'complete' option.  The found
			keyword is inserted in front of the cursor.

	CTRL-N		Search forward for next matching keyword.  This
			keyword replaces the previous matching keyword.

	CTRL-P		Search backwards for next matching keyword.  This
			keyword replaces the previous matching keyword.

	CTRL-X CTRL-N or
	CTRL-X CTRL-P	Further use of CTRL-X CTRL-N or CTRL-X CTRL-P will
			copy the words following the previous expansion in
			other contexts unless a double CTRL-X is used.

출처 : http://vimdoc.sourceforge.net/htmldoc/insert.html#i_CTRL-P

 

> ctrl + n : 현재 위치 다음에 위치한 키워드를 기반으로 단어를 완성한다.

> ctrl + p : 현재 위치 이전의 키워드를 기반으로 단어를 완성한다.

 

이 단축키들은 INSERT MODE ( 기본 vim에서 i 를 한번 누르면 모드변경 ) 에서만 동작한다.

 

그럼 한번 vim에서 어떻게 나오는지 보자.

1. 아래와 같이 파일에 키워드를 넣어두고 z 를 입력했다. 그리고 insert mode로 변경하기 위해 'i'를 누른 뒤 ctrl + n / p를 시도했지만 Pattern을 찾지 못한다. 

 

2. a로 시작하는 키워드는 apple 이 있다.

a 를 우선 입력하고, ctrl + p / n 을 시도한다.
ctrl + p / n 둘 다 같은 결과를 얻는다. 

 

3. 여러개의 키워드가 있는 경우에는 어떻게 나타나는가?

매칭 키워드 중 하나를 고르면 된다.

 

4. ctrl + n 과 ctrl + p 의 차이

p를 쓰나 n을 쓰나 다 매칭해서 연결해주는 것 같은데 뭐가다를까? 라는 생각이 들었는데 ( help 페이지를 대충 읽으면 이렇다. ) p는 이전 키워드 우선, n은 다음 키워드 우선을 매칭시켜주는 것을 볼 수 있다.

d로 시작하는 문자를 찾아본다
p 를 쓰면 위에있는 dope를 먼저 연결한다
ctrl + n 은 다음문자인 drano를 매칭시킨다

 

자주 쓰다보면 익숙해 지는데 사실 엄청나게 유용하지만도 않다.

Syntax를 체크해서 맞추는게 아니라 내가 이미 사용한 키워드 / Syntax 기반으로만 동작하기 때문에, 정말 반복되는 키워드가 있지 않는이상 쓸일은 별로 없다.

그래도 마우스로 복사해서 붙이거나 다른 단축키로 ( Visual block ) 복사하는 것 보다 편할 때가 있으니..

참고해 두면 다 도움이 된다.