No puedes
Aquí está el código fuente C para lo que <C-w><C-i>
hace:
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;
No estoy completamente seguro de dónde type
se recoge la variable, no tenía ganas de buscar eso, pero el punto es que no hay una facilidad real para decir "esta clave está asignada a esta funcionalidad". Básicamente, es solo un struct
mapeo char
de una función, ¡y la implementación de la segunda pulsación de tecla ( <C-i>
) es simplemente fealdad ad-hoc!
Esto es diferente de Emacs, donde (supongo) que todo está en Lisp, y sus asignaciones personalizadas no son diferentes de las asignaciones predeterminadas de Emacs. Pero en Vim usted tiene mapeos "mágicos" proporcionados por el código C que mapean contra funciones C que nunca están expuestas en Vim. Siempre digo que Vim tiene la mejor idea, pero Emacs tiene la mejor implementación ;-)
Entonces, la única forma es buscarlo en los archivos de ayuda. Es por eso que cerré esto como un duplicado de Cómo navego a los temas en la documentación de Vim, ya que esa es la única respuesta práctica que alguien puede dar. De hecho, se podría argumentar que se podría dar una explicación más profunda de la pregunta (como acabo de hacer), y si hubiera argumentado que , en lugar de dar la respuesta (ahora eliminada), probablemente habría dicho "usted" de nuevo, perdón por el error "y lo volví a abrir ;-)
En cualquier caso, para ilustrar brevemente las convenciones con algunos ejemplos:
:help w
- mapeo en modo normal para w
(mayúsculas y minúsculas);
:help g8
- mapeo en modo normal para g8
;
:help v_o
- mapeo de modo visual para o
; otros modos son c
para línea de comandos y i
para inserción;
:help CTRL-W
- mapeo en modo normal para <C-w>
;
:help i_CTRL-W
- mapeo de modo de inserción para <C-w>
;
:help CTRL-W_CTRL-I
- mapeo en modo normal para <C-w><C-i>
;
:help i_CTRL-G_<Down>
- Insertar mapeo de modo para <C-g><Down>
.