Ты не можешь
Вот исходный код 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
берется переменная, мне не хотелось это искать, но дело в том, что нет реальной возможности сказать «этот ключ сопоставлен с этой функциональностью». По сути, это просто a, struct
который отображает a char
в функцию, а реализация второго нажатия клавиши ( <C-i>
) - просто случайное уродство!
Это отличается от Emacs, где (я полагаю) все находится в Лиспе, и ваши пользовательские отображения ничем не отличаются от стандартных отображений Emacs. Но в Vim у вас есть «магические» отображения, предоставляемые кодом C, которые сопоставляются с функциями C, которые никогда не отображаются в Vim. Я всегда говорю, что 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>
.