¿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.

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


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<.


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.


2

No creo que haya un registro de tiempo de ejecución, per se , pero puede ejecutarlo en modo de depuración.
http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts


2
Este sitio parece haber sido pirateado o algo así. Hasta que se solucione, consulte la versión en caché en web.archive.org/web/20090323034339/http://… .
— Mu Mind

Tengo 403 prohibidos
— Frank Fang


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.


¿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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.