Vim에서 remap, noremap, nnoremap 및 vnoremap 매핑 명령의 차이점은 무엇입니까?
Vim에서 remap, noremap, nnoremap 및 vnoremap 매핑 명령의 차이점은 무엇입니까?
remap
매핑이 재귀 적으로 작동하도록 하는 옵션 입니다. 기본적으로 켜져 있으며 그대로 두는 것이 좋습니다. 나머지는 아래에 설명 된 매핑 명령입니다 .
:map
하고 :noremap
있는 재귀 및 비 - 재귀 다양한 매핑 명령의 버전. 이것이 의미하는 바는 다음과 같은 경우입니다.
:map j gg
:map Q j
:noremap W j
j
에 매핑됩니다 gg
. Q
것 도 에 매핑 할 수 gg
있기 때문에, j
재귀 매핑 확장됩니다. W
로 매핑됩니다 j
(그리고에 gg
있기 때문에) j
비 재귀 매핑 확장되지 않습니다.
이제 Vim이 모달 편집기 라는 것을 기억하십시오 . 그것은 갖는 정상 모드, 영상 모드와 다른 모드.
매핑이 세트의 각각 들어있다 매핑 이 작동 정상적인 시각을 선택하고 조작 모드 ( :map
및 :noremap
) 번이 통상 모드 (작동 :nmap
하고 :nnoremap
), 비주얼 모드 (하나 :vmap
와 :vnoremap
) 등.
이에 대한 자세한 지침은 다음을 참조하십시오.
:help :map
:help :noremap
:help recursive_mapping
:help :map-modes
저는 Vim 문서에서 이러한 명령의 이름 뒤에있는 의미를 설명 했어야한다고 생각합니다. 그들이하는 일을 말하는 것만으로는 이름을 기억하는 데 도움이되지 않습니다.
map
모든 재귀 매핑 명령의 "루트"입니다. 루트 형식은 "일반", "시각적 + 선택"및 "연산자 보류"모드에 적용됩니다. (나는 언어학 에서와 같이 "루트"라는 용어를 사용하고 있습니다.)
noremap
모든 비 재귀 매핑 명령의 "루트"입니다. 루트 형식은와 동일한 모드에 적용됩니다 map
. ( nore
"비 재귀"를 의미 하는 접두사를 생각해보십시오 .)
( 삽입 및 명령 줄에 적용되는 !
것과 같은 모드 도 있습니다 map!
.)
이 문맥에서 "재귀 적"이 의미하는 바는 아래를 참조하십시오.
n
매핑이 작동하는 모드를 수정하는 것과 같은 모드 문자를 앞에 붙 입니다. 적용 가능한 모드 목록의 하위 집합 (예 : "시각적"만)을 선택하거나 map
적용되지 않는 다른 모드 (예 : "삽입")를 선택할 수 있습니다 .
사용 help map-modes
은 매핑이 적용되는 모드를 제어하는 방법을 설명하는 몇 가지 테이블을 보여줍니다.
모드 문자 :
n
: 정상 만v
: 시각 및 선택o
: 운영자 보류x
: 비주얼 만s
: 선택 만i
: 삽입c
: 명령 줄l
: 삽입, 명령 줄, regexp-search (및 기타. 총칭하여 "Lang-Arg"의사 모드라고 함)
" 재귀 "는 매핑이 결과로 확장 된 다음 결과가 다른 결과로 확장됨을 의미합니다.
다음 중 하나에 해당하면 확장이 중지됩니다.
- 결과는 더 이상 다른 것에 매핑되지 않습니다.
- 비재 귀적 매핑이 적용되었습니다 (즉, "noremap"[또는 ilk 중 하나]가 최종 확장입니다).
이 시점에서 Vim의 최종 결과에 대한 기본 "의미"가 적용 / 실행됩니다.
" Non-recursive "는 매핑이 한 번만 확장되고 해당 결과가 적용 / 실행됨을 의미합니다.
예:
nmap K H
nnoremap H G
nnoremap G gg
위의 원인 K
을 확장 H
한 다음 H
에 확장 G
및 중지합니다. nnoremap
확장되고 즉시 중지되는으로 인해 중지됩니다. 의 의미 G
가 실행됩니다 (예 : "마지막 줄로 이동"). 최대 하나의 비재 귀적 매핑이 확장 체인에 적용됩니다 (마지막 확장이 발생 함).
의 매핑 G
을 gg
누를 경우에만 적용 G
하지만 누를 경우 K
. 이 매핑은 확장이 중지 되는 2 행이므로 3 행은 사용되지 않으므로 재귀 적으로 매핑 K
되었는지 여부 G
에 관계없이 누르기에 영향을주지 K
않습니다.
주의 vnoremap
하고 vmap
Visual AND Select 모드에서 작업하십시오. 비주얼 모드에서만 매핑을 사용하려면 xmap
및을 사용하십시오 xnoremap
.
한 가지 차이점은 다음과 같습니다.
:map
않는nvo
== 정상 + (+ 시각적 것은 선택) + 연산자 보류:map!
하지ic
+ 명령 줄 모드 삽입 ==
help map-modes
표에 명시된대로 .
따라서 : map
모든 모드에 매핑되지 않습니다 .
모든 모드에 매핑하려면 :map
및 :map!
.
'Program Tip' 카테고리의 다른 글
Hibernate hbm2ddl.auto 구성의 가능한 값은 무엇이며 무엇을합니까? (0) | 2020.09.27 |
---|---|
사용자 지정 HTTP 헤더 : 명명 규칙 (0) | 2020.09.27 |
선호하는 Bash shebang은 무엇입니까? (0) | 2020.09.27 |
그룹화 된 UITableView 헤더의 높이를 변경하는 방법은 무엇입니까? (0) | 2020.09.25 |
자바에서 '외부'IP 주소 얻기 (0) | 2020.09.25 |