특정 키가 눌릴 때, 미리 설정한 기능을 호출하도록 하는 것이다.
약어 매크로는 입력 모드와 명령행 모드에서만 사용 가능하지만, 키 매핑은 모든 모드에서 사용할 수 있다.
옵션처럼 단축키를 설정할 때 .vimrc
에 추가해서 사용하면, vim을 실행할 때 자동으로 설정이 반영된다.
키 맵핑을 설정하는 명령어는 다음과 같다.
명령어 | 설명 |
---|---|
nmap key command | normal mode에서 key 를 누르면 command 가 실행된다. |
imap key command | insert mode에서 key 를 누르면 command 가 실행된다. |
vmap key command | visual mode에서 key 를 누르면 command 가 실행된다. |
cmap key command | command line mode에서 key 를 누르면 command 가 실행된다. |
🔍ex)
nmap <F2> :up<CR>
namp <F2>
는 일반 모드에서 F2
키를 눌렀을 때의 단축키를 설정한다는 뜻이다.:up<CR>
는 F2
를 눌렀을 때 실행되는 명령이다.키 맵핑 해제하는 방법은 각 명령의 map
대신 unmap
을 입력하는 것이다.
명령어 |
---|
nunmap |
iunmap |
vunmap |
cunmap |
특정 파일을 열거나 저장하는 이벤트가 발생할 때, 사용자가 지정한 명령을 자동으로 수행시키는 기능이다.
autocmd
라는 명령으로 자동 명령을 .vimrc
에 설정해 놓으면 된다.
autocmd
는 약어로 au
로 사용한다.
이 때 명령의 format은 다음과 같다.
autocmd {Event1},{Event2} {Filetype1},{FileType2} {동작1}|{동작2}
{Event}
와 {FileType}
은 ,
로 구분한다.|
(수직바)로 구분한다.명령의 예시는 다음과 같다.
au BufRead,BufNewFile *.txt colo evening
colo evening
명령을 자동으로 실행하라는 뜻이다.au
명령의 두 번째 인수인 파일과 관련된 주요 이벤트는 다음과 같다.
이벤트 | 설명 |
---|---|
BufNewFile | 파일을 새로 생성했을 때 |
BufRead | 파일을 읽었을 때 |
BufWrite | 파일을 저장했을 때 |
SwapExists | 스왑 파일이 이미 존재하는 경우 |
파일 형식을 구분할 수 있는 이벤트가 있다.
이벤트 | 설명 |
---|---|
FileType | 다음에 나오는 인자인 {FileType}을 확인하여 자동 명령을 실행하는 이벤트 |
au FileType cpp colo state
au BufRead,BufNewFile *.cpp,*.cc,*.cxx colo state
처럼 하는 것보다 훨씬 효율적이다.