2010-03-20 9 views
63

Me gustaría saber si hay una forma de averiguar si una clave hace algo en vim. Sé que puedo usar :map para ver las asignaciones definidas por el usuario, pero ¿hay algo para las cosas incorporadas?Detectar si una clave está vinculada a algo en vim

Por ejemplo, yo siempre había CTRL - W obligado a cerrar pestaña, porque pensé que no estaba acostumbrado. Después de medio año, descubrí que hay algunas secuencias que lo utilizan, como CTRL - WCTRL - S dividir la ventana, y fue una pesadilla para capacitar a mí mismo.

+4

Hablando de colisiones accidentales de asignaciones definidas por el usuario, es una buena práctica usar [_mapleader_] (http://vimdoc.sourceforge.net/htmldoc/map.html#mapleader) – derenio

Respuesta

60

Si usted echa un vistazo a la respuesta sugerida por Randy Morris se encuentra que

:help index 

le dará la lista que desee.

+0

¡muy útil! es bueno saber que hay un lugar al que puedes ir si solo quieres explorar algo nuevo –

27

No es una respuesta completa, pero es posible que desee comprobar :help map-which-keys para obtener una lista de las 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 tecla específica está asignada a una acción.

14

Utilice ": map!" y ": map" para las teclas de configuración manual y ": help 'char (-combination)'" para averiguar qué teclas ya están mapeadas en vim out-of-the-box (/ fuera de las opciones de compilación específicas). (ligeramente fuera de tema pero todavía regardable (creo): Use. ": Scriptnames" para ver los archivos que han sido obtenidos en qué orden)

Saludos, S.

+0

Si quieres buscar qué teclas disparan un cierto comando, puedes hacer esto: : redir keys.txt : map : fin redir Entonces keys.txt abierta y la búsqueda de lo que los comandos están obligados. –

27

Para comprobar la asignación predeterminada :

:help index 

por otra asignación que se realiza por los usuarios o plugin:

: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 seleccione y el modo pendiente de operador. El segundo comando muestra los mapas que funcionan en modo de inserción y línea de comando.

Normalmente, la salida de los comandos anteriores abarcará varias páginas. Se puede utilizar el siguiente conjunto de comandos para redirigir la salida a el archivo vim_maps.txt:

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

Puede utilizar mapcheck: -.

Por ejemplo, quería asignar a <CR> ,igg=G para sangrar un archivo. Para comprobar si hay un mapeo ya para <CR> , i

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

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

+0

Me trataron de comprobar si "o" está ligado a algo en el modo normal, con lo siguiente: si comprobación de mapa ("O", "N") == "" | echo "no mapping" pero informa "no mapping", cuando o definitivamente está obligado a "abrir nueva línea". ¿Lo estoy usando mal? –

+0

@ K.Norbert: Creo esto para las asignaciones definidas por el usuario –

8

I desnatada a través :help index e hicieron una lista de algunos de los nmap claves no utilizadas:

  • Q (cambia a modo de "Ex")
  • Z excepto ZZ, ZQ
  • \
  • gb, gc, gl, GX, GY, gz
  • zp, ZQ, zu, zy
  • cd, cm, co, cp, cq, Cr, cs, Cu, cx, cy
  • cc, dm, hacer, dp, dq, el dr, ds, du, dx, dy
  • GA, GB, GC, gG, GK, GL, GM, vaya, 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 utiliza)

Por favor, actualice/comentario.

Cuestiones relacionadas