Detectar si una clave está vinculada a algo en vim


88

Me gustaría saber si hay una manera de averiguar si una clave hace algo en vim. Sé que puedo usar :mappara ver asignaciones definidas por el usuario, pero ¿hay algo para las cosas integradas?

Por ejemplo, siempre tuve CTRL- Wobligado a cerrar pestaña, porque pensé que no estaba en uso. Después de medio año, descubrí que hay algunas secuencias que lo usan, como CTRL- W CTRL- Spara dividir la ventana, y fue una pesadilla volver a entrenarme.


4
Hablando de colisiones accidentales de asignaciones definidas por el usuario, es realmente una buena práctica usar mapleader
— derenio

Respuestas:


78

Si revisa la respuesta sugerida por Randy Morris, encontrará que

:help index 

te dará la lista que quieras.


¡muy útil! bueno saber que hay un lugar donde puedes ir vistazo si lo que desea es hurgar para aprender algo nuevo
— JonnyRaa

40

Para verificar la asignación predeterminada:

:help index

Para otro mapeo realizado por usuarios o complementos:

:map
:map!

De http://vim.wikia.com/wiki/Mapping_keys_in_Vim_- Tutorial (Part_1) :

El primer comando muestra los mapas que funcionan en modo normal, visual y de selección y pendiente de operador. El segundo comando muestra los mapas que funcionan en modo de inserción y línea de comandos.

Normalmente, la salida de los comandos anteriores ocupará varias páginas. Puede utilizar el siguiente conjunto de comandos para redirigir la salida al archivo vim_maps.txt:

:redir! > vim_maps.txt
:map
:map!
:redir END

A menos que las versiones más nuevas de Vim de repente ofrezcan una mejor alternativa, esta parece ser la única forma de buscar mapas de teclas incluidos y personalizados. mapcheck(como se menciona en otra respuesta ) también solo cubre combinaciones de teclas personalizadas. La principal diferencia entre la salida a un archivo de texto y mapcheck es que la salida a un archivo de texto y / o el uso le :help indexpermite /C-wen Vim encontrar cualquier cosa usandoC-w
— Zoe

33

No es una respuesta completa, pero es posible que desee consultar :help map-which-keysuna lista de claves que vim le recomienda usar en sus mapas personalizados.

Esa sección de ayuda tiene una recomendación sobre cómo saber si una clave específica está asignada a una acción.


19

Utilice :map!y :mappara establecer claves manualmente y :help 'char(-combination)'para averiguar qué claves ya están asignadas en vim de fábrica (/ fuera de sus opciones de compilación específicas). (Un poco fuera de tema, pero aún se puede considerar (creo): use :scriptnamespara ver qué archivos se obtuvieron en qué orden).


Si desea buscar qué teclas activan un comando determinado, puede hacer esto:: redir keys.txt: map: redir end Luego, abra keys.txt y busque qué comandos están vinculados.
— Christian Oudard

18

Hojeé :help indexe hice una lista de algunas de las nmapclaves no utilizadas :

  • Q (cambiar al modo "Ex")
  • Z excepto ZZ, ZQ
  • \
  • <Space>(igual que len el modo normal; la tecla más grande y menos utilizada en el modo normal)
  • gb, gc, gl, gx, gy, gz
  • gs (dormir)
  • zp, zq, zu, zy
  • cd, cm, co, cp, cq, cr, cs, cu, cx, cy
  • dc, dm, hacer, dp, dq, dr, ds, du, dx, dy
  • gA, gB, gC, gG, gK, gL, gM, gO, gS, gX, gY, gZ
  • zB, zI, zJ, zK, zP, zQ, zP, zS, zT, zU, zV, zY, zZ
  • ] a,] b,] e,] g,] h,] j,] k,] l,] n,] o,] q,] r,] t,] u,] v,] w,] x ,] y
  • [a, [b, [e, [g, [h, [j, [k, [l, [n, [o, [q, [r, [t, [u, [v, [w, [x] , [y
  • CTRL-G, CTRL-K
  • CTRL- \ a - z (reservado para extensiones)
  • CTRL- \ A - Z (no se usa)

Actualice / comente.


12

Puede utilizar mapcheck.: -

Por ejemplo, quería asignar <CR> ,ia gg=Ga un archivo con sangría. Para comprobar si ya hay un mapeo para<CR> , i

if mapcheck("\<CR>", "I") == "" |echo "no mapping"

... pero esto no detectará si el mapeo es parte de una secuencia.


Intenté comprobar si "o" está vinculado a algo en modo normal, con lo siguiente: if mapcheck ("o", "N") == "" | echo "sin mapeo" pero informa "sin mapeo", cuando o está definitivamente vinculado a "abrir nueva línea". ¿Lo estoy usando mal?
— K. Norbert

@ K.Norbert: Creo esto para las asignaciones definidas por el usuario
— Moha, el camello todopoderoso,
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.