Você não pode.
Aqui está o código fonte C para o que <C-w><C-i>
faz:
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;
Não tenho muita certeza de onde a type
variável é captada, não estava com vontade de procurá-la, mas o ponto é que não há nenhuma facilidade real para dizer "essa chave está mapeada para essa funcionalidade". É basicamente apenas um struct
que mapeia a char
para uma função, e a implementação do segundo pressionamento de tecla ( <C-i>
) é simplesmente feiura ad-hoc!
Isso é diferente do Emacs, onde (presumo) tudo está no Lisp, e seus mapeamentos personalizados não são diferentes dos mapeamentos padrão do Emacs. Mas no Vim você tem mapeamentos "mágicos" que são fornecidos pelo código C que mapeiam contra funções C que nunca são expostas no Vim. Eu sempre digo que o Vim tem a melhor ideia, mas o Emacs tem a melhor implementação ;-)
Portanto, a única maneira é procurar nos arquivos de ajuda. É por isso que encerrei isso como uma duplicata de Como navego para tópicos na documentação do Vim, já que essa é a única resposta prática que alguém pode dar. Alguém poderia de fato argumentar que uma explicação mais aprofundada para a questão poderia ser dada (como acabei de fazer), e você argumentou que , em vez de dar a resposta (agora excluída), eu provavelmente teria dito "você" está certo, desculpe pelo erro "e o abriu novamente ;-)
De qualquer forma, para ilustrar brevemente as convenções com alguns exemplos:
:help w
- mapeamento de modo normal para w
(diferencia maiúsculas de minúsculas);
:help g8
- mapeamento de modo normal para g8
;
:help v_o
- mapeamento de modo visual para o
; outros modos são c
para linha de comando e i
inserção;
:help CTRL-W
- mapeamento de modo normal para <C-w>
;
:help i_CTRL-W
- inserir modo de mapeamento para <C-w>
;
:help CTRL-W_CTRL-I
- mapeamento de modo normal para <C-w><C-i>
;
:help i_CTRL-G_<Down>
- inserir mapeamento de modo para <C-g><Down>
.