수색…


소개

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 - 일반 모드 맵 매핑 해제
  • timeoutttimeout 변수를 변경하여 시퀀스의 키 사이의 최대 시간을 구성 할 수 있습니다

예제들

  • 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)를 사용하는 동안 예상대로 작동하지 않을 수 있습니다. 이 문제에 대한 해결책은이 문서의 범위에 포함되지 않지만 여기 에서 찾을 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow