2011-05-18 17 views
23

A veces presiono las teclas incorrectas en el pequeño teclado de mi computadora portátil y ocurre una navegación o edición extraña (a veces una característica que es nueva para mí).¿Cómo ver las últimas teclas presionadas en vim?

Aunque puedo deshacer la edición (u) o la navegación (control-o), no sé lo que hice mal, por lo que es difícil evitarlo en el futuro. También es frustrante no saber lo que acaba de pasar. Entonces, me gustaría poder ver mis últimas teclas.

Un poco como :set showcmd, pero para mostrar las pulsaciones de teclas literales, y (idealmente) un breve historial de ellas.

Solo he encontrado el historial de línea de comandos y navegación en help/google.


Para aclarar: No estoy buscando para la historia de comandos, pero historial de pulsaciones de teclas. p.ej. ¿He pulsado ) accidentalmente y voy a la siguiente oración? ¿Oprimí dd y eliminé una línea? Supongo que es similar a un registrador de pulsaciones de teclas .

El historial de línea de comandos (:history) solo muestra los comandos ingresados ​​en el :.

Respuesta

1

:history mostrará su historial de comandos, eso debería ayudarlo a descubrir las nuevas características que todos descubrimos en vim con las pulsaciones de teclas mal colocadas.

+1

Gracias, pero ya he mencionado en la pregunta que ya he encontrado la historia de comandos - lo que estoy buscando es la historia de pulsaciones de teclas. Para aclarar, ¿presioné ')' accidentalmente y voy a la siguiente oración? ¿Presioné 'dd' y eliminé una línea? El historial de línea de comandos no muestra estos; solo muestra los comandos ingresados ​​en el indicador ':'. – 13ren

4

Que yo sepa, lo más cercano que puede obtener es el comando q, que registra sus pulsaciones de teclas en un registro de su elección. Obviamente, eso tiene que configurarse a priori, ya que está destinado para repeticiones complejas, aunque es probable que puedas hackear algo para comenzar a grabar en cada archivo abierto. Sin embargo, está la cuestión del uso de la memoria y el molesto mensaje de "grabación".

Probablemente la forma más sencilla sería instalar el software de captura de teclas. No tengo ninguna experiencia personal con estos, pero las implicaciones de seguridad son probablemente leves si la obtiene de una fuente confiable o la construye usted mismo, configúrela solo para registrar en la memoria, no en un disco, solo tenga un búfer del tamaño de una frase más o menos, o solo iniciar sesión en vim windows.

+2

¡buena idea! Puede inspeccionar la macro almacenada con 'q' usando': reg'. Por ejemplo, si comienza 'qx', entonces escriba' kkjjdd/hello^M: w^M' (y 'q' al final), luego': reg x' lo imprimirá (el '^ M' es el retorno del carro ; todo está grabado, incluidas las búsquedas '/' y los comandos ':'). – 13ren

+0

He estado usando 'q', y funciona bien; pero la salida con ': reg' no se ajusta, por lo que las teclas más recientes a menudo se pierden en el lado derecho de la pantalla (es común que sea largo, porque registra todo, por ejemplo, si ingresa algunas líneas de texto, todas esas teclas están incluidas). Pero me dijo que a veces presiono 'n' en lugar de' b', arrojándome al archivo en vez de retroceder una palabra. Todavía estoy esperando que vim pueda hacer exactamente lo que quiero; Lo dejaré un día más. – 13ren

+1

@ 13ren, también puedes pegar el valor de un registro en la ventana de texto con '" [reg letter] p'. –

1

Gundo - Vale la pena echarle un vistazo, aunque tal vez no sea exactamente lo que está buscando, ayudará levemente.

Te permite visualizar el árbol de deshacer de Vim, esto significa que podrás ver las últimas ediciones que ocurrieron. Por ejemplo, si borraste accidentalmente una línea o algo así, esto aparecerá en el árbol, sin embargo, no te muestra las pulsaciones reales que se presionaron y no mostrará cosas tales como los movimientos del cursor.

+0

Gracias. Gundo es un proyecto increíble, basado en los increíbles (pero inutilizables) árboles de vim. no estoy al tanto de ninguna herramienta que lo tenga (excepto para git y otros sistemas de control de versiones, que se basan en el concepto mismo, en una escala mayor). Pero, como nota, esto no responde mi pregunta porque no muestra la pulsación de tecla. Para revertir ediciones erróneas, la operación de deshacer regular funciona bien, no hay necesidad de usar una solución más compleja cuando una más simple ya lo resuelve perfectamente. Sin embargo, creo que estabas usando esto como una excusa para promocionar a Gundo. .. y realmente no puedo culparte por eso. :-) – 13ren

2

Más recientemente me encontré con un plugin de registro para Vim y me recordó de esta pregunta:

http://wolever.net/~wolever/wiki/vim-logging

Básicamente registra todo lo que haces para su posterior análisis, se tenía la intención de obtener información sobre el uso de comandos pero debería funcionar perfectamente para encontrar los comandos mágicos que accidentalmente ingresaste.

0

Un poco viejo, pero sólo he encontrado esto en reddit:

Puede empezar con vim con la bandera -w para escribir todas las pulsaciones en un archivo. Ver :h -w

vim -w filename 
Cuestiones relacionadas