:map
인수없이 명령 을 실행 하면 사용자 정의 매핑 목록이 표시되어야하지만 예를 들어 Ctrl-W Ctrl-I를 누르면 문제가 발생하지만 내장 매핑으로 어떤 기능이 발생했는지 전혀 알 수 없습니다. :map
명령에 나타나지 않습니다 .
키의 기능을 어떻게 알 수 있습니까?
:help CTRL-W_CTRL-I
또는:help CTRL-W_i
:map
인수없이 명령 을 실행 하면 사용자 정의 매핑 목록이 표시되어야하지만 예를 들어 Ctrl-W Ctrl-I를 누르면 문제가 발생하지만 내장 매핑으로 어떤 기능이 발생했는지 전혀 알 수 없습니다. :map
명령에 나타나지 않습니다 .
키의 기능을 어떻게 알 수 있습니까?
:help CTRL-W_CTRL-I
또는:help CTRL-W_i
답변:
당신은 할 수 없습니다.
다음은 C 소스 코드입니다 <C-w><C-i>
.
normal.c
:
/*
* This table contains one entry for every Normal or Visual mode command.
* The order doesn't matter, init_normal_cmds() will create a sorted index.
* It is faster when all keys from zero to '~' are present.
*/
static const struct nv_cmd
{
int cmd_char; /* (first) command character */
nv_func_T cmd_func; /* function for this command */
short_u cmd_flags; /* NV_ flags */
short cmd_arg; /* value for ca.arg */
} nv_cmds[] =
{
[...]
{Ctrl_W, nv_window, 0, 0},
};
[...]
/*
* CTRL-W: Window commands
*/
static void
nv_window(cmdarg_T *cap)
{
if (!checkclearop(cap->oap))
do_window(cap->nchar, cap->count0, NUL); /* everything is in window.c */
}
window.c
:
/*
* all CTRL-W window commands are handled here, called from normal_cmd().
*/
void
do_window(
[..]
) {
switch (nchar)
{
[..]
case 'i': /* Go to any match */
case Ctrl_I:
type = FIND_ANY;
/* FALLTHROUGH */
[..]
default: beep_flush();
break;
type
변수가 어디에서 선택 되는지 완전히 확신 하지 못하고, 나는 그것을 찾는 것처럼 느끼지 않지만 요점은 "이 키는이 기능에 매핑되어 있습니다"라고 말하는 실제 기능이 없다는 것입니다. 기본적으로 struct
는 a char
를 함수에 매핑하는 것입니다. 두 번째 키 입력 ( <C-i>
) 의 구현 은 단순히 추악합니다!
이것은 Emacs와 다릅니다. 여기서는 모든 것이 Lisp에 있으며 사용자 정의 매핑은 Emacs의 기본 매핑과 다르지 않습니다. 그러나 Vim에는 C 코드에서 제공하는 "매직"매핑이 있으며 Vim에서는 절대 노출되지 않는 C 함수에 매핑됩니다. 나는 항상 Vim이 더 나은 아이디어를 가지고 있다고 말하지만, Emacs는 더 나은 구현을 가지고 있습니다 ;-)
따라서 유일한 방법은 도움말 파일에서 찾아 보는 것입니다. 그렇기 때문에 Vim의 문서에서 주제를 탐색하는 방법은 누구에게나 제공 할 수 있는 유일한 실질적인 답변 이기 때문에 이것을 복제했습니다 . 하나는 실제로 (내가 방금했던 것처럼) 질문에 대한보다 자세한 설명이 제공 될 수 있음을 주장하고 주장했다 수있는 것을 대신 (지금 삭제) 응답을주는, 아마도 '당신'에게 말했다 것 다시, 실수로 죄송합니다 "라고 다시 열었습니다 ;-)
어쨌든 몇 가지 예를 통해 협약을 간략하게 설명하십시오.
:help w
− w
(대소 문자 구분)에 대한 정상 모드 매핑 ;:help g8
−에 대한 정상 모드 매핑 g8
;:help v_o
-시각 모드 매핑 o
; 다른 모드는 c
명령 행 및 i
삽입 모드입니다 .:help CTRL-W
−에 대한 정상 모드 매핑 <C-w>
;:help i_CTRL-W
−에 대한 삽입 모드 매핑 <C-w>
;:help CTRL-W_CTRL-I
−에 대한 정상 모드 매핑 <C-w><C-i>
;:help i_CTRL-G_<Down>
−에 대한 삽입 모드 매핑 <C-g><Down>
.commandline completion
CTRL-D를 사용하여 vim help에서 호출하는 것입니다 ( "도움을 검색"이라고 함). 입력 한 :h CTRL-W
다음를 누릅니다 <CTRL-D>를, 당신은 예를 들어 문자열 "CTRL-W"를 포함하는 모든 명령의 목록을 얻을 것이다 CTRL-W, CTRL-W_^, CTRL-W-<Down>, ...
. 입력 :h g8<CTRL-D>
하면 볼 수 g8
및 8g8
사용 가능한 도움말 주제로. 이것이 없으면 도움말 주제를 정확하게 입력하고 작동하는 정확한 문자열을 찾기가 어렵습니다.
vim 도움말 파일에 있습니다. :help index
기본적으로 어떤 키 가 매핑
되지 않는지 알고 싶다면:help map-which-keys
참고 : 위는 최신 vim 참조 매뉴얼에 대한 클릭 가능한 링크입니다.