2012-01-19 16 views
37

¿Hay algún comando que muestre cuál fue el último comando en modo normal?Vim "¿mostrar mi último comando"?

Supongamos que accidentalmente presiono la tecla aleatoria y obtengo un resultado inesperado. Claro que puedo deshacerlo, pero ¿podría revelar qué tecla se presionó y cómo se interpretó?

+1

Lo mejor que se me ocurre es esto: ': echo v: count. v: operator' – sehe

+0

El punto (.) repite el último comando ingresado en modo normal. Ver http://vim.runpaint.org/editing/repeating-commands/ –

+1

Sí, pero esto no mostraría el comando que se repite. – dvs

Respuesta

10

El texto del último comando se almacena en el registro .. Puede ver todos los registros por : visualice. Lamentablemente, no dice qué comenzó el comando normal.

Para ver los comandos de : (modo de comando) que puede utilizar : hist o q: que se limita a los últimos 20 (por defecto).

Otra posibilidad es guardar el buffer de deshacer : wundo undo.bin - pero el búfer de deshacer es binario.

Pero ninguno de estos en realidad responde a su pregunta. Tengo curiosidad si se puede hacer.

+0

dicho registro almacena el último texto insertado (después de 'I, A, i, a, s, S, C, C ') – Benoit

6

Es difícil saberlo. Puede jugar con las variables:

v:operator 
v:count (and v:prevcount) 
v:register 

Pero no puede obtener por completo el último comando de modo normal emitido.

Sin embargo, si desea registrar sistemáticamente todo lo que escribe mientras está en Vim, puede iniciar vim -W ~/.vim-last-scriptout (una versión de Windows: vim -W "%HOMEPATH%\Vim\.last-scriptout) Puede alias en su shell en una máquina UNIX. Cada tecla, o tecla de control, se grabará en ese archivo. Tenga en cuenta que si usa gvim o vim -g (la GUI) puede encounter this bug.

Si desea reproducir este archivo, puede usar :source! (con el signo de exclamación) o la opción -s desde la línea de comandos.

En Windows he configurado gvimportable.exe -W gvim_directory\last_scriptout como mi editor predeterminado en mi programa Commander (FreeCommander). De esta forma siempre puedo recordar lo que he escrito para hacer algo y repetir una secuencia de comandos en otro archivo. Por supuesto, tengo otro atajo para abrir Vim y reproducir las secuencias de comandos.

Tenga en cuenta que el archivo puede escribirse solo cuando Vim sale, por lo que debe perder su sesión para saber lo que ha hecho.

40

Pulse dos puntos (:) y luego use la flecha hacia arriba para volver a los comandos anteriores. También puede usar las flechas arriba/abajo para moverse por la lista.

+0

respuesta perfecta. ¡Esto necesita más votos positivos! –

+1

Esto no funcionó para mí por alguna razón. Resultó que la historia se pone a 0. La solución era correr ': la historia del set = 100' y luego fue capaz de la flecha hacia arriba para ver los comandos anteriores. – Jim

+0

He estado tratando durante años para encontrar la manera de salir de este modo. Esc no funciona. Parece: a veces funciona, pero no siempre. Siempre me atasco en este modo. – devios1

25

q: le mostrará el historial de comandos en Vim. q/ le mostrará el historial de búsquedas

+5

Por lo tanto, esta es la razón por la cual esta característica aparece aleatoriamente de vez en cuando. (Es el reverso de ': q'). No hubiera sabido que existía para ir a buscarlo de otra manera. – felwithe

+1

OMG. Esto me ha perseguido por tanto tiempo. Yo no podía entender lo que era el comando real (': w ', ':' q , etc), así que no sabía qué a Google para. Jaja. ¡Gracias! – rgin

+1

I * always * quedar atrapado en este modo. ¿Cómo sales de eso? Esc no funciona y eso realmente me sobresalta. – devios1

Cuestiones relacionadas