vim
Vim의 주요 매핑
수색…
소개
Vim 키 매핑을 업데이트하면 더 기억에 남거나 접근하기 쉬운 문자에 키 명령을 다시 할당하고 키가없는 함수에 대한 키 명령을 만드는 두 가지 종류의 문제를 해결할 수 있습니다. 여기에서 핵심 명령과 그 적용 문맥 (즉, vim 모드)을 매핑하는 다양한 방법에 대해 배웁니다.
기본 매핑
지도 개요
키 시퀀스는 map
변형 중 하나를 사용하여 다른 키 시퀀스로 다시 매핑 될 수 있습니다.
예를 들어, 빠른 map
에서 j k 를 누르면 다음의 일반적인 map
이 삽입 모드 를 종료합니다.
:inoremap jk <Esc>
지도 연산자
서로 다른 모드에 대한 :map
의 여러 변형이 있습니다.
명령들 | 모드 |
---|---|
:map , :noremap , :map :unmap | 보통, 시각 및 운영자 대기 모드 |
:map! , :noremap! , :unmap! | 삽입 및 명령 줄 모드 |
:nmap , :nnoremap , :nunmap | 일반 모드 |
:imap , :inoremap , :iunmap | 삽입 및 바꾸기 모드 |
:vmap , :vnoremap , :vunmap | 시각 및 선택 모드 |
:xmap , :xnoremap , :xunmap | 비주얼 모드 |
:smap , :snoremap , :sunmap | 모드 선택 |
:cmap , :cnoremap , :cunmap | 명령 줄 모드 |
:omap , :onoremap , :ounmap | 운영자 보류 모드 |
보통 :noremap
변형을 사용해야합니다 . 매핑을 재 매핑 및 재귀에 대한 면역으로 만듭니다.
map 명령
-
:map
(또는 위의 변형 중 하나)을 사용하여 모든 매핑을 표시 할 수 있습니다. - 특정 키 시퀀스에 대한 현재 매핑을 표시하려면 다음을 사용하십시오
:map <key>
여기서<key
>는 키 시퀀스입니다 - Esc 와 같은 특수 키 는
<Esc>
와 같은 특수<>
표기법을 사용하여 매핑됩니다. 전체 키 코드 목록은 http://vimdoc.sourceforge.net/htmldoc/intro.html#keycodes를 참조하십시오. -
:nmapclear
- 모든 일반 모드 맵 삭제 -
:nunmap
- 일반 모드 맵 매핑 해제 -
timeout
및ttimeout
변수를 변경하여 시퀀스의 키 사이의 최대 시간을 구성 할 수 있습니다
예제들
-
imap jk <Esc>
: 삽입 모드에서jk
를 입력하면 정상 모드로 돌아갑니다. -
nnoremap tt :tabnew<CR>
: 일반 모드에서tt
를 입력하면 새 탭 페이지가 열립니다. -
nnoremap <Cj> <Cw>j
: 일반 모드에서<Cj>
를 입력하면 아래와 왼쪽 창으로 이동할 수 있습니다 -
vmap <Cc> \cc
: 시각적 모드에서<Cc>
vmap <Cc> \cc
입력하면\cc
(NERDCommenter 명령으로 행을 주석 처리합니다). 플러그인 매핑을 사용하므로:vnoremap
사용할 수 없습니다:vnoremap
here!
학습과 읽기 여기
맵 리더 키 조합
리더 키는 최종 사용자가 재정의 할 수있는 키 바인딩을 사용하여 매핑을 만드는 방법으로 사용할 수 있습니다.
리더는 기본적으로 \ 키입니다. 이를 덮어 :let g:mapleader='somekey(s)'
려면 최종 사용자가 매핑을 정의하기 전에 :let g:mapleader='somekey(s)'
해야합니다.
일반적인 시나리오에서 mapleader는 .vimrc
설정되고 플러그인은 매핑의 키 바인딩 부분에 <Leader>
를 사용하여 사용자 정의 할 수 있습니다.
플러그인에서 다음과 함께 매핑을 정의합니다.
:nnoremap <Leader>a somecomplexaction
이것은 \ + 키 조합에 somecomplexaction 동작을지도한다.
리더가없는 다음은 동작은 변경되지 않습니다.
또한 <Plug>Mappings
을 사용하여 플러그인 키 바인딩을 사용자 정의 할 수있는 공간을 확보 할 수 있습니다.
기본 매핑 (편리한 바로 가기)의 그림.
대부분의 텍스트 편집기에서 현재 문서를 저장하기위한 표준 바로 가기는 Ctrl + S (또는 MacOS에서는 Cmd + S )입니다.
Vim에는 기본적으로이 기능이 없지만 매핑을 통해 작업을 쉽게 할 수 있습니다. .vimrc
파일에 다음 행을 추가하면 작업이 수행됩니다.
nnoremap <c-s> :w<CR>
inoremap <c-s> <c-o>:w<CR>
nnoremap
명령은 Ctrl + S 를 :w
(현재 내용 쓰기) 명령에 매핑하지만 inoremap
명령은 Ctrl + S 를 :w
명령에 매핑하고 삽입 모드로 돌아갑니다 ( <co>
명령 <co>
은 한 명령에 대해 일반 모드로 들어가고 <esc>:w<cr>a
와 같은 다른 솔루션이 보장 할 수없는 커서 위치를 변경하지 않고 나중에 삽입 모드로 돌아갑니다.
비슷하게,
" This is commented, as Ctrl+Z is used in terminal emulators to suspend the ongoing program/process.
" nnoremap <c-z> :u<CR>
" Thus, Ctrl+Z can be used in Insert mode
inoremap <c-z> <c-o>:u<CR>
" Enable Ctrl+C for copying selected text in Visual mode
vnoremap <c-c> <c-o>:y<CR>
추신 : 그러나 그것은주의해야합니다 Ctrl + S 는 ssh (또는 PuTTY)를 사용하는 동안 예상대로 작동하지 않을 수 있습니다. 이 문제에 대한 해결책은이 문서의 범위에 포함되지 않지만 여기 에서 찾을 수 있습니다.