보통 에디터들은 단어를 타이핑하는 도중 탭을 누르면 단어를 완성시켜주는 기능이 있다.
하지만 별다른 설정을 하지 않은 vim은 그런 기능이 나오지 않아 불편하다고 느낄 수 있다.
하지만 당연히 vim에서도 자동 완성 기능을 사용할 수 있다.
vim에서 자동 완성 기능을 사용하는 세 가지 방법을 알아보자.
개인적으로 vim을 사용한지 얼마 안 된 사람이나 이것저것 설치하는게 귀찮다면 맨 마지막 방법을 추천한다.
방법 1. Control + x
- 편집할 파일을 열고 자동완성할 단어에 커서를 올린다. 예를 들어 단어
function
을 완성하고 싶다면fun
까지 쳤다면n
뒤에 커서를 위치하자. Ctrl-X
을 누른다. 그러면 이제 auto-complete가 활성화된다.tab
을 누른다. 그러면 자동 완성 단어 후보가 나올 것이다.- 방향키로 단어를 선택한다.
Enter
을 눌러서 선택한 단어로 자동 완성시킬 수 있다.
별다른 설치나 설정은 없지만 단점은 자동 완성을 사용할 때마다 Ctrl-X
을 누르는 과정이 너무 귀찮다.
방법 2. YouCompleteMe
우선 Vim의 플러그인 관리자 Vundle을 설치해야한다. Vundle 공식 웹사이트를 참고하여 설치를 진행한다.
링크를 걸은 웹사이트의 단계를 잘 완료했으면 .vimrc파일에 다음 내용을 입력하자.
Plugin 'Valloric/YouCompleteMe'
그런 다음 Vim을 실행하여 :q
나 :wq
로 파일을 닫았던 것과 같은 방식으로 :PluginInstall
을 입력하여 YouCompleteMe을 설치한다.
다시 .vimrc 파일을 열고 아래 내용을 추가하여 플러그인을 구성하자.
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
let g:ycm_key_invoke_completion = '<C-Space>'
참고로 첫 줄은 YouCompleteMe을 구성하는 파일 위치를 지정하고 두 번째 줄은 자동 완성을 호출하기 위한 키 바인딩을 설정하는 것이다.
이제 Vim을 열고 Ctrl-Space
으로 자동완성을 할 수 있다.
설명은 쉽지만 Vundle에 익숙하지 않으면 설치에 고생하기 쉽다. 마지막으로 가장 쉬운 방법을 알아보자.
방법 3. vimrc에 스크립트 추가하기 (가장 쉽고 간편)
개인적으로 가장 쉽고 사용도 편리하다고 생각하는 방법이다.
구성 방법
.vimrc 파일을 열고 다음 내용을 추가하고 저장하자.
function InsertTabWrapper()
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k'
return "\<tab>"
else
return "\<c-n>"
endif
endfunction
inoremap <tab> <c-r>=InsertTabWrapper()<cr>
구성은 끝났다. 너무 간단하니 설명을 좀만 덧붙이겠다.
위의 메소드는 inoremap을 사용하여 Insert 모드에서 키보드의 탭 키를 매핑하여 일반 탭 문자를 삽입하거나 이전에 사용한 단어를 기반으로 단어를 자동 완성해주는 사용자 지정 함수이다.
InsertTabWrapper()은 먼저 커서가 줄의 시작 부분에 있는지 또는 이전 문자가 키워드 문자(a-zA-Z0-9_)가 아닌지 확인한다. 두 조건 중 하나가 참이면 일반 탭 문자를 삽입하는 문자열 "<tab>"을 반환한다.
그렇지 않으면 Vim에서 자동 완료 기능을 트리거하는 명령인 문자열 "<c-n>"을 반환한다. 이제 inoremap은 탭 키를 InsertTabWrapper()에 매핑한다. 이 함수는 컨텍스트를 기반으로 탭 문자를 삽입할지 아니면 자동 완료를 트리거할지 결정한다.
진짜 간단히 정리하면 탭 키를 눌렀을 때 상황을 봐서 자동 완성 기능으로 연결해준다는 소리이다.
이제 .vimrc 파일에 위 내용을 추가했으면 다 끝난 것이다.
사용 방법
- 편집할 코드를 열고 자동완성하고 싶은 단어 뒤에 커서를 위치하자. 예를 들어 단어
function
을 완성하고 싶다면fun
까지 쳤다면n
뒤에 커서를 위치하자. tab
을 누른다. 그러면 자동 완성 단어 후보가 나올 것이다.- 방향키로 단어를 선택한다.
Enter
을 눌러서 선택한 단어로 자동 완성시킬 수 있다.
설정도 간단하고 사용 방법도 굉장히 익숙한 방법이다.
Vim에서 자동 완성을 하는 세 가지 방법을 알아보았다.
세 번째 방법을 가장 추천하지만 Vundle도 사용할 일이 많기 때문에 익숙해지는 과정으로 시도는 해보면 좋겠다.
자동 완성 기능으로 vim에서 코딩 생활을 하자.
'코딩 환경 > Vim' 카테고리의 다른 글
[Vim] Vim, Vi 여러 줄 주석 처리/해제하기 (0) | 2023.03.13 |
---|---|
[Vim] Vim, Vi 단축키 모음 (Vim Shortcuts) (0) | 2023.03.10 |
[vim] vi, vim 이전 커서 위치 기억 (0) | 2023.02.20 |
[vim] vi, vim 설정 / Setting .vimrc (0) | 2023.02.20 |