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