Non puoi.
Ecco il codice sorgente C per ciò che <C-w><C-i>
fa:
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;
Non sono del tutto sicuro di dove type
venga prelevata la variabile, non mi andava di cercarla, ma il punto è che non esiste una vera funzione per dire "questa chiave è mappata su questa funzionalità". Fondamentalmente è solo uno struct
che associa char
a una funzione e l'implementazione della seconda sequenza di tasti ( <C-i>
) è semplicemente bruttezza ad hoc!
Questo è diverso da Emacs, dove (presumo) tutto sia in Lisp e le tue mappature personalizzate non sono diverse dalle mappature predefinite di Emacs. Ma in Vim hai mappature "magiche" che sono fornite dal codice C che mappano contro le funzioni C che non sono mai esposte in Vim. Dico sempre che Vim ha l'idea migliore, ma Emacs ha l'implementazione migliore ;-)
Quindi l'unico modo è cercarlo nei file della guida. Questo è il motivo per cui ho chiuso questo come duplicato di Come posso navigare verso gli argomenti nella documentazione di Vim poiché questa è l'unica risposta pratica che chiunque può dare. Si potrebbe davvero sostenere che una spiegazione più approfondita alla domanda potrebbe essere data (come ho appena fatto), e se avessi sostenuto che , invece di dare la risposta (ora cancellata), avrei probabilmente detto "tu" esatto, scusate l'errore "e riaprirlo ;-)
Ad ogni modo, per illustrare brevemente le convenzioni con alcuni esempi:
:help w
- mappatura della modalità normale per w
(sensibile al maiuscolo / minuscolo);
:help g8
- mappatura della modalità normale per g8
;
:help v_o
- mappatura della modalità visiva per o
; altre modalità sono c
per la riga di comando e i
per l'inserimento;
:help CTRL-W
- mappatura della modalità normale per <C-w>
;
:help i_CTRL-W
- inserire la modalità di mappatura per <C-w>
;
:help CTRL-W_CTRL-I
- mappatura della modalità normale per <C-w><C-i>
;
:help i_CTRL-G_<Down>
- inserire la modalità di mapping per <C-g><Down>
.