Esiste un "registro di runtime vim"?


130

A volte provo una personalizzazione / comando nel mio vimrc. Tutto sembra corretto, ma non funziona.

È difficile sapere cosa sta succedendo all'avvio di vim e sapere quale comando ha fallito o no, quindi è davvero difficile eseguire il debug di ciò che può causare un problema nel mio vimrc. È un approccio basato su errori di prova, che richiede tempo e in realtà un PITA. Ad esempio, sto riscontrando problemi con il plug-in snipmate in alcuni file e non ho idea di come scoprire il problema.

Esiste un "registro di runtime" all'avvio di vim che indica quali comandi ha eseguito, quali non sono riusciti e quali? Questo mi aiuterebbe molto.

Risposte:


163

l'esecuzione di vim con l'opzione -V [N] farà un registro di runtime piuttosto pesante, qui N è il livello di debug.

vim -V9myVim.log

creerebbe un registro del livello di debug 9 nella directory corrente con il nome del file myVim.log


Mi sono piaciuti entrambi gli approcci di Zyx e te, ma secondo me il tuo approccio è migliore perché è più semplice, solo nel cmd, e posso impostare un percorso per il registro ogni volta che lo eseguo, e non ho bisogno di "gonfiare "mio vimrc. E benvenuti a SO!
— Qualcuno usa ancora il tuo MS-DOS l'

2
Vedi anche :h 'verbose'e :h :verbose.
— Palec,

MacVim non sembra supportare -Valcuna opzione o alcuna opzione da riga di comando.
— emallove,

questo apre un buffer vim vuoto senza un nome file. Quale prossimo?
— Geoff Langenderfer,

104

:messages mostra tutti gli avvisi, errori e messaggi informativi che sono comparsi (possibilmente brevemente) nella linea di stato di vim.

:echo errmsg stampa il messaggio di errore più recente.

g<è un'altra caratteristica che pochi conoscono. Da :help g<:

Il g<comando può essere utilizzato per visualizzare l'ultima pagina dell'output del comando precedente. Ciò è particolarmente utile se si digita accidentalmente <Space>al prompt hit-enter.

Ad esempio, provare :!lsquindi annullare il prompt, quindi premere g<.


15

Inserisci questa funzione in .vimrc:

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

Quindi crea la directory ~/.log/vime chiama ToggleVerbose()per ottenere il tuo login ~/.log/vim/verbose.log. Si noti che è possibile rilevare l'errore «variabile nidificata troppo in profondità per la visualizzazione» che normalmente non verrà visualizzato solo perché è stato aumentato il livello dettagliato.


2

Non credo che ci sia un registro di runtime di per sé , ma è possibile eseguirlo in modalità debug.
http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts


2
Questo sito sembra essere stato violato o qualcosa del genere. Fino a quando non viene risolto, consultare la versione memorizzata nella cache all'indirizzo web.archive.org/web/20090323034339/http://… .
— Mu Mind,

Mi è stato vietato il 403
— Frank Fang il


1

Questo probabilmente va contro tutto ciò che SO rappresenta, ma ecco cosa faccio: ho appena colpito lo schermo di stampa non appena viene visualizzato l'avvertimento e guardo l'immagine.


Il pulsante Pausa non avrebbe un effetto simile, meno la carta sprecata?
— Rook

Fino ad ora non ho mai saputo cosa facesse il tasto Pausa. In ogni caso, non penso che faccia nulla in Linux stackoverflow.com/questions/92802/…
— puk

2
FWIW, i terminali * nix sospenderanno l'output su Ctrl-S e riprenderanno su Ctrl-Q.
— joeytwiddle,

1

Ho dovuto aggiungere "set nocp" per usare la funzione "ToggleVerbose ()" quando eseguito in root a causa di & verbose

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.