vimrc – ¿Cómo registrar la entrada de mi teclado para hacer estadísticas sobre ella?

Pregunta:

Me gustaría saber cuáles son los patrones más comunes que estoy usando durante la codificación. Así que estoy buscando una forma de grabar todas las entradas de mi teclado mientras estoy en vim, preferiblemente con marcas de tiempo. Luego, podría hacer un análisis sobre los patrones / movimientos utilizados más recientemente a qué hora toma una acción y averiguar qué es lo que hay que optimizar.

¿Hay alguna forma idiomática de hacer esto en Vim? ¿Intento escribir un complemento para esto? ¿Cuáles serían las implicaciones de rendimiento de hacer algo como esto?

Gracias

Respuesta:

Vim permite registrar todas las entradas cuando la opción de línea de comando -w se pasa con un archivo:

-w {scriptout} Todos los caracteres que escribe se registran en el archivo {scriptout}, hasta que sale de Vim. Esto es útil si desea crear un archivo de script para usar con "vim -s" o ": source!". Si existe el archivo {scriptout}, se añaden caracteres.

Ahora que tenemos acceso a la entrada podemos redirigirla a donde queramos. Por ejemplo, de la siguiente manera ( solo sistemas * nix ):

vim -w >(./timestamper.py > log)
vim -w >(tee raw-log | ./timestamper.py > log) # If we want the raw log, too

Donde timestamper.py es la siguiente secuencia de comandos corta de Python:

#!/usr/bin/env python

import sys
import datetime

while True:
    if (sys.stdin.closed):
        sys.stdout.write("Input closed\n")
        break

    a = sys.stdin.read(1)
    if (not a):
        break
    sys.stdout.write("[{}]: {}\n".format(datetime.datetime.now(), a))

El script se puede reemplazar con cualquier otro programa que tome entrada si desea hacer algo más sofisticado.

NOTA: Después de algunas pruebas breves, descubrí que vim parece mantener un búfer de las entradas que descarga en algún momento y al salir. Esto hace que las marcas de tiempo sean poco fiables.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım