Existe-t-il un «journal d'exécution vim»?


130

Parfois, j'essaye une personnalisation / commande dans mon vimrc. Tout semble correct, mais cela ne fonctionne tout simplement pas.

Il est difficile de savoir ce qui se passe au démarrage de vim et de savoir quelle commande a échoué ou non, il est donc vraiment difficile de déboguer ce qui peut causer un problème dans mon vimrc. C'est une approche d'essai-erreur, qui prend du temps et vraiment un PITA. Par exemple, j'ai des problèmes avec le plugin snipmate dans certains fichiers et je n'ai tout simplement pas la idée de la façon de découvrir le problème.

Existe-t-il un "journal d'exécution" au démarrage de vim, indiquant quelles commandes il a exécutées, lesquelles ont échoué et autres? Cela m'aiderait beaucoup.

Réponses:


163

exécuter vim avec l'option -V [N] fera un journal d'exécution assez lourd, ici N est le niveau de débogage.

vim -V9myVim.log

créerait un journal de niveau de débogage 9 dans le répertoire courant avec le nom de fichier myVim.log


J'ai aimé les deux approches de Zyx et de vous, mais votre approche est meilleure à mon avis car elle est plus simple, uniquement dans le cmd, et je peux définir un chemin vers le journal à chaque fois que je l'exécute, et je n'ai pas besoin de "gonfler" "mon vimrc. Et bienvenue à SO!
Quelqu'un vous utilise toujours MS-DOS

2
Voir aussi :h 'verbose'et :h :verbose.
Palec

MacVim ne semble pas prendre en charge l' -Voption ou aucune option de ligne de commande.
emallove le

cela ouvre un tampon vim vide sans nom de fichier. Et ensuite?
Geoff Langenderfer

104

:messages affiche tous les avertissements, erreurs et messages d'information apparus (éventuellement brièvement) dans la ligne d'état de vim.

:echo errmsg imprime le message d'erreur le plus récent.

g<est une autre caractéristique que peu de gens connaissent. De :help g<:

La g<commande peut être utilisée pour voir la dernière page de la sortie de commande précédente. Ceci est particulièrement utile si vous avez tapé accidentellement <Space>à l'invite de frappe.

Par exemple, essayez d' :!lsannuler l'invite, puis appuyez sur g<.


15

Mettez cette fonction dans .vimrc:

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

Ensuite, créez un répertoire ~/.log/vimet appelez ToggleVerbose()pour obtenir votre connexion ~/.log/vim/verbose.log. Notez que vous pouvez attraper l'erreur «variable imbriquée trop profondément pour l'affichage» qui n'apparaîtra normalement pas simplement parce que vous avez élevé votre niveau de verbosité.


2

Je ne pense pas qu'il existe un journal d'exécution en soi , mais vous pouvez l'exécuter en mode débogage.
http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts


2
Ce site semble avoir été piraté ou quelque chose comme ça. Jusqu'à ce qu'il soit corrigé, consultez la version mise en cache sur web.archive.org/web/20090323034339/http : //....
Mu Mind

J'ai 403 interdit
Frank Fang


1

Cela va probablement à l'encontre de tout ce que SO représente, mais voici ce que je fais: je viens d'appuyer sur l'écran d'impression dès que l'avertissement apparaît et de regarder l'image.


Le bouton de pause n'aurait-il pas un effet similaire, sans le papier gaspillé?
Tour

Jusqu'à présent, je n'ai jamais su ce que faisait la touche pause. En tout cas, je ne pense pas que cela fasse quoi que ce soit sous Linux stackoverflow.com/questions/92802/…
puk

2
Les terminaux FWIW, * nix suspendront la sortie sur Ctrl-S et reprendront sur Ctrl-Q.
joeytwiddle

1

J'ai dû ajouter "set nocp" pour utiliser la fonction "ToggleVerbose ()" lors de l'exécution à la racine à cause de & verbose

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.