web-dev-qa-db-fra.com

Vim "afficher ma dernière commande"?

Existe-t-il une commande qui montre quelle était la dernière commande en mode normal?

Supposons que j'appuie accidentellement sur une touche aléatoire et que j'obtienne un résultat inattendu. Bien sûr, je peux l'annuler, mais pourrais-je révéler quelle touche a été enfoncée et comment elle a été interprétée?

54
dvs

Frappez les deux points (:), puis utilisez la flèche vers le haut pour commencer à parcourir les commandes précédentes. Vous pouvez également utiliser les flèches haut/bas pour vous déplacer dans la liste.

60
user3620332

q: vous montrera l'historique des commandes dans Vim. q/ vous montrera l'historique des recherches

44
Sushil

Le texte de la dernière commande est stocké dans le . S'inscrire. Vous pouvez voir tous les registres par :display. Malheureusement, il ne dit pas ce qui a lancé la commande normale.

Pour voir les commandes de : (mode commande) que vous pouvez utiliser :hist ou q: qui est limité aux 20 derniers (par défaut).

Une autre possibilité consiste à enregistrer le tampon d'annulation :wundo undo.bin - mais le tampon d'annulation est binaire.

Mais aucune de ces réponses ne répond à votre question. Je suis curieux de savoir si cela peut être fait.

11
RunHolt

Il est difficile de le savoir. Vous pouvez jouer avec les variables:

v:operator
v:count (and v:prevcount)
v:register

Mais vous ne pouvez pas obtenir complètement la dernière commande en mode normal.

Cependant, si vous souhaitez enregistrer systématiquement tout ce que vous saisissez dans Vim, vous pouvez lancer vim -W ~/.vim-last-scriptout (une version Windows: vim -W "%HOMEPATH%\Vim\.last-scriptout) Vous pouvez l'aliaser dans votre Shell sur une machine UNIX. Chaque clé, ou touche de contrôle, sera enregistrée dans ce fichier. Notez que si vous utilisez gvim ou vim -g (l'interface graphique) vous pourriez rencontrer ce bogue .

Si vous souhaitez rejouer ce fichier, vous pouvez utiliser :source! (avec le point d'exclamation) ou -s option depuis la ligne de commande.

Sous Windows, j'ai défini gvimportable.exe -W gvim_directory\last_scriptout comme éditeur par défaut dans mon programme Commander (FreeCommander). De cette façon, je peux toujours me rappeler ce que j'ai tapé pour faire quelque chose et répéter une séquence de commandes sur un autre fichier. Bien sûr, j'ai un autre raccourci pour ouvrir Vim et jouer le scriptout.

Notez que le fichier peut être écrit uniquement à la fermeture de Vim, vous devez donc perdre votre session pour savoir ce que vous avez fait.

6
Benoit