먼저, map
및 noremap
각각에 대한 맵핑을 생성한다는 점에서 유사하다, 정상 시각을 선택하고 조작 모드를 보류 동시에 . Vim은 이것을 다음에서 자세히 설명합니다 :help map-overview
.
Overview of which map command works in which mode. More details below.
COMMANDS MODES ~
:map :noremap :unmap Normal, Visual, Select, Operator-pending
:nmap :nnoremap :nunmap Normal
:vmap :vnoremap :vunmap Visual and Select
:smap :snoremap :sunmap Select
:xmap :xnoremap :xunmap Visual
:omap :onoremap :ounmap Operator-pending
:map! :noremap! :unmap! Insert and Command-line
:imap :inoremap :iunmap Insert
:lmap :lnoremap :lunmap Insert, Command-line, Lang-Arg
:cmap :cnoremap :cunmap Command-line
위의 도움말에 따라 매핑을 특정 모드로 제한하려면 앞에 추가해야합니다.
'n'(일반의 경우), 'v'(시각 및 선택의 경우), 'c'(명령의 경우), 'x'(비주얼 모드의 경우), 's'(선택의 경우), 'o'(오퍼레이터 보류의 경우) ).
예를 들어
nmap n nzz
의 일반 모드, 재귀 매핑을 n
만듭니다.
이제는 noremap
비 재귀 버전입니다 map
.
비 재귀 매핑이란 무엇입니까? Vim은 다음과 같이 대답합니다 :help map-recursive
.
If you include the {lhs} in the {rhs} you have a recursive mapping. When
{lhs} is typed, it will be replaced with {rhs}. When the {lhs} which is
included in {rhs} is encountered it will be replaced with {rhs}, and so on.
This makes it possible to repeat a command an infinite number of times. The
only problem is that the only way to stop this is by causing an error. The
macros to solve a maze uses this, look there for an example. There is one
exception: If the {rhs} starts with {lhs}, the first character is not mapped
again (this is Vi compatible).
For example: >
:map ab abcd
will execute the "a" command and insert "bcd" in the text. The "ab" in the
{rhs} will not be mapped again.
이에 대한 예는 다음을 매핑하는 것입니다.
:imap j k
:imap k j
이제 vim은 j를 k로, k를 j 무한 횟수로 대체하므로 재귀 매핑을 생성했다는 오류를 표시합니다.
그렇기 때문에 일반적으로 거의 항상 ( <Plug>
매핑 또는 이와 유사한 경우 제외 ) 비 재귀 매핑을 사용 하는 것이 좋습니다 . 이렇게하면 실수로 재귀 매핑을 만들 때 Vim이 중단되는 것을 방지 할 수 있습니다. 따라서 비 재귀 매핑은 Vim에서 명령을 더 안전하게 매핑하는 방법입니다.
위의 정보를 이용 :noreabbrev
하면 비 재귀 버전의 :abbrev
명령 임을 알 수 있습니다 .
:abbrev
삽입, 교체 및 명령 모드에서만 사용할 수 있습니다 . :abbrev
약어 (Vim이 확장 할 수있는 바로 가기)를 만드는 데 사용됩니다. 짧은 확장은 :map
/ :noremap
을 사용하여 매핑 을 작성하거나 :abbrev
/ :noreabbrev
을 사용하여 약어를 작성하거나 Vim에서 입력을 확장하려는 경우입니다.