2010-06-11 8 views
90

A veces intento una personalización/comando en mi vimrc. Todo parece ser correcto, pero simplemente no funciona.¿Hay un "registro de tiempo de ejecución de vim"?

Es difícil saber qué ocurre cuando se inicia vim, y saber qué comando falló o no, por lo que es realmente difícil depurar lo que puede estar causando un problema en mi vimrc. Es un enfoque de prueba de error, que consume mucho tiempo y realmente es un PITA. Por ejemplo, estoy teniendo problemas with snipmate plugin in some files y simplemente no tengo ni idea de cómo descubrir el problema.

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

Respuesta

120

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

vim -V9myVim.log 

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

+0

Me gustaron ambos enfoques de Zyx y usted, pero su enfoque es mejor en mi opinión porque es más simple, solo en el cmd, y puedo establecer una ruta de acceso al registro cada vez que lo ejecuto, y no lo hago Necesito "inflar" mi vimrc. Y bienvenido a SO! –

+0

Véase también [': h 'verbose''] (http://vimdoc.sourceforge.net/htmldoc/options.html#%27verbose%27) y [': h: verbose'] (http: // vimdoc. sourceforge.net/htmldoc/various.html#:verbose). – Palec

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 hackeado o algo así. Hasta que se solucione, consulte la versión en caché en http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts. –

+0

Tengo 403 prohibido –

+0

@FrankFang http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts – Jay

11

Ponga 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 

A continuación, crear el directorio ~/.log/vim y llamar para obtener ToggleVerbose() su registro en ~/.log/vim/verbose.log. Tenga en cuenta que puede detectar un error de "variable anidada demasiado profunda para mostrar" que normalmente no aparecerá solo porque ha elevado su nivel detallado.

0

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

+0

¿No tendría el botón de pausa un efecto similar, menos el papel desperdiciado? – Rook

+0

Hasta ahora, nunca supe lo que hacía la tecla de pausa. En cualquier caso, no creo que haga nada en Linux http://stackoverflow.com/questions/92802/what-is-the-linux-equivalent-to-dos-pause – puk

+2

FWIW, * los terminales nix pausarán la salida en Ctrl-S y reanudar en Ctrl-Q. – joeytwiddle

72

: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 función que pocas personas conocen. De :help g<:

El comando g< se puede utilizar para ver la última página de la salida del comando anterior. Esto es especialmente útil si accidentalmente ingresó <Space> en el indicador de hit-enter.

Por ejemplo :!ls tratan a continuación, cancelar el indicador, después haga clic en g<.

0

he tenido que añadir "set NOCP", para usar la función "ToggleVerbose()" cuando se ejecuta en la raíz debido a & detallado

Cuestiones relacionadas