¿Hay un "registro de tiempo de ejecución vim"?

130

A veces intento una personalización / comando en mi vimrc. Todo parece ser correcto, pero simplemente no funciona.

Es difícil saber qué sucede cuando se inicia vim y saber qué comando falló o no, por lo que es realmente difícil depurar qué puede estar causando un problema en mi vimrc. Es un enfoque de prueba y error, que lleva mucho tiempo y realmente es una PITA. Por ejemplo, tengo problemas con el complemento snipmate en algunos archivos y simplemente no tengo idea de cómo descubrir el problema.

¿Hay un "registro de tiempo de ejecución" cuando se inicia vim, que indica qué comandos ejecutó, cuáles fallaron y tal? Esto me ayudaría mucho.

Alguien todavía te usa MS-DOS
fuente

Respuestas:

163

ejecutar vim con la opción -V [N] hará un registro de tiempo de ejecución bastante considerable, aquí N es el nivel de depuración.

vim -V9myVim.log

crearía un registro de depuración de nivel 9 en el directorio actual con el nombre del archivo myVim.log

sueño
fuente
Me gustaron ambos enfoques de Zyx y de usted, pero su enfoque es mejor en mi opinión porque es más simple, solo en el cmd, y puedo establecer una ruta al registro cada vez que lo ejecuto, y no necesito "inflar" "mi vimrc. Y bienvenido a SO!
Alguien todavía te usa MS-DOS el
2
Ver también :h 'verbose' y :h :verbose.
Palec
MacVim no parece soportar-V opción o cualquier opción de línea de comandos.
emallove
Esto abre un búfer vim vacío sin un nombre de archivo. ¿Qué sigue?
Geoff Langenderfer
104

:messages muestra todas las advertencias, errores y mensajes informativos que aparecieron (posiblemente brevemente) en la línea de estado de vim.

:echo errmsg imprime el mensaje de error más reciente.

g<Es otra característica que pocas personas conocen. De :help g<:

El g<comando se puede usar para ver la última página del resultado del comando anterior. Esto es especialmente útil si accidentalmente escribió <Space>en el indicador de entrada y entrada.

Por ejemplo, intente y :!lsluego cancele la solicitud, luego presione g<.

Justin M. Keyes
fuente
15

Pon esta función en .vimrc:

function! ToggleVerbose()
    if !&verbose
        set verbosefile=~/.log/vim/verbose.log
        set verbose=15
    else
        set verbose=0
        set verbosefile=
    endif
endfunction

Luego cree un directorio ~/.log/vimy llame ToggleVerbose()para obtener su inicio de sesión ~/.log/vim/verbose.log. Tenga en cuenta que puede detectar el error «variable anidada demasiado profunda para mostrar» que normalmente no aparecerá solo porque ha elevado su nivel detallado.

ZyX
fuente
1

Esto probablemente va en contra de todo lo que SO significa, pero esto es lo que hago: presiono la pantalla de impresión tan pronto como aparece la advertencia y miro la imagen.

puk
fuente
¿No tendría el botón de pausa un efecto similar, menos el papel desperdiciado?
Torre de
Hasta ahora nunca supe qué hacía la tecla de pausa. En cualquier caso, no creo que haga nada en Linux stackoverflow.com/questions/92802/…
puk
2
FWIW, * nix terminales pausará la salida en Ctrl-S y reanudará en Ctrl-Q.
joeytwiddle
1

Tuve que agregar "set nocp" para usar la función "ToggleVerbose ()" cuando se ejecuta en root debido a & verbose

masuch
fuente