Puis-je voir l'historique des pressions sur les touches en mode normal?

32

Je sais que Vim conserve l'historique des commandes ex, des recherches, des emplacements de saut, des modifications et éventuellement d'autres.

Avec showcmdset, Vim vous indique également les clés que vous avez entrées jusqu'ici pour une commande en mode normal, jusqu'à ce que cette commande soit exécutée.

Parfois, en mode normal, je me trompe et des actions se produisent. Je peux annuler ces actions, mais je veux parfois savoir comment se sont déroulées les modifications pendant mon erreur. Parfois, le montage a l'air cool et je veux savoir comment le répéter à l'avenir.

Alors, y a-t-il un moyen de voir l'historique des appuis sur les touches en mode normal, de préférence délimité quand une édition ou une action réelle (comme un mouvement ou un changement de mode) s'est produite?

John O'M.
la source
4
Peut-être liée: drbunsen.org/vim-croquet
wchargin

Réponses:

20

En suivant le lien de @WChargin un peu plus loin, j'ai trouvé ceci:

Vous pouvez démarrer vim avec l' option -wou -Wcomme suit:

vim -w keys.txt my_file

Tous les caractères que vous tapez sont enregistrés dans le fichier {scriptout}, jusqu'à ce que vous quittiez Vim.

-wsera ajouté au fichier spécifié s'il existe; -Wva l'écraser.

Cela ne vous donne pas tout à fait ce que vous voulez, mais c'est la bonne direction.

Mise à jour: Il ressemble à vim tampons en fait toutes les frappes jusqu'à ce que vous quittez vim, mais il y a un patch d' une ligne ici qui va écrire immédiatement les frappes.

xième
la source
Merci! J'utilise ceci comme point de départ pour fouiller dans le code source. Il semble que -w enregistre chaque pression sur une touche, pas seulement les commandes en mode normal, mais vous avez raison: c'est la bonne direction!
John O'M.
@xthrd, comment ces keys.txtfichiers sont-ils formatés / structurés? Lorsque j'utilise -w, l'ajout se produit toujours dans une ligne longue-longue-longue; et, il y a des caractères étranges affichés: sous UTF-8, chaque fois que j'ouvre un fichier dans un nouveau tampon, j'obtiens €齛. C’est un bon marqueur en soi, mais ce serait bien si les journaux pouvaient être analysés de manière optionnelle.
llinfeng
@llinfeng Ce n'est pas du tout formaté. Il s'agit littéralement d'un fichier contenant les frappes dans l'ordre où elles ont été créées. (Notez que si certaines touches sont <cr>enfoncées, le fichier contiendra des sauts de ligne.) Cela tient au fait que le but principal est de créer des fichiers pouvant être lus avec l' -soption. Mais pourquoi ne pas l'essayer par vous-même!
Rich
@Rich Merci pour la clarification. J'ai utilisé ce mécanisme de suivi des clés pour résoudre le problème à l'origine de ma recherche. [Ma leçon est que: ne jamais mapper Wpour la ligne de commande.]
llinfeng
-4

Il y a q:qui montre un historique de commande.

Je trouve également utile de pouvoir appuyer sur une commande partiellement terminée pour parcourir les correspondances. Par exemple /abc , en appuyant dessus, vous pourrez parcourir l'historique des recherches commençant par 'abc'

Collin Peters
la source
5
q: affiche l'historique des commandes ex, et est utile, mais n'est pas un journal de commandes normales, comme "ad2tn (efface dans le registre jusqu'à la deuxième n)
John O'M.
N'oubliez pas qu'en cours de modification d'une commande, vous pouvez afficher la ligne actuelle dans l'éditeur d'historique et utiliser vi pour la modifier en appuyant surCtrl+f
Sukima