65 votes

Commande Vim "afficher ma dernière commande" ?

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

Supposons que je frappe accidentellement 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 ?

1 votes

La meilleure chose à laquelle je puisse penser est la suivante : :echo v:count . v:operator

88voto

user3620332 Points 859

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

4 votes

Pour une raison que j'ignore, cela n'a pas fonctionné pour moi. Il s'est avéré que l'historique était fixé à 0. La solution a été de lancer :set history=100 puis j'ai pu utiliser la flèche vers le haut pour afficher les commandes précédentes.

1 votes

Cela fait des années que j'essaie de comprendre comment sortir de ce mode. La touche Esc ne fonctionne pas. Il semble que : fonctionne parfois, mais pas toujours. Je reste toujours bloqué dans ce mode.

5 votes

Tandis que ( :) et les flèches haut/bas affichent l'historique des commandes, (/) les flèches haut/bas affichent l'historique des modèles de recherche. J'ai trouvé cela très utile.

75voto

Sushil Points 643

q: vous montrera l'historique des commandes dans Vim.
q/ vous montrera l'historique des recherches.
Et surtout, :q va tout à fait le mode.

27 votes

Donc c'est pourquoi cette fonction apparaît de temps à autre de manière aléatoire. (C'est l'inverse de :q ). Je n'aurais pas su qu'il existait pour aller le chercher autrement.

5 votes

I toujours rester bloqué dans ce mode. Comment en sortir ? L'évasion ne fonctionne pas et c'est ce qui me fait trébucher.

0 votes

@devios1 : Vim est écrit par un démon.

14voto

RunHolt Points 714

Le texte de la dernière commande est stocké dans le fichier . registre. Vous pouvez voir tous les registres en :display . Malheureusement, il ne dit pas ce que la commande normale a commencé.

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

Une autre possibilité est de sauvegarder le tampon d'annulation :wundo undo.bin -- mais le tampon d'annulation est binaire.

Mais aucun d'entre eux ne répond réellement à votre question. Je suis curieux de savoir si c'est possible.

1 votes

Ce registre stocke le dernier texte inséré (après I, A, i, a, s, S, c, C )

10voto

jbeku Points 41

Entrée du colon : puis ctrl+p affiche la commande précédente, c'est-à-dire qu'il vous permet de revenir en arrière dans l'historique de vos commandes vim. ctrl+n avance.

C'est très pratique si vous avez l'habitude d'utiliser la ligne de commande et que vous préférez ne pas modifier le positionnement de votre main au clavier pour utiliser les touches fléchées.

8voto

Benoit Points 35553

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 émise.

Toutefois, si vous souhaitez enregistrer systématiquement tout ce que vous tapez dans Vim, vous pouvez lancer la commande suivante 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 touche, ou touche de contrôle, sera enregistrée dans ce fichier. Notez que si vous utilisez gvim o vim -g (l'interface graphique), vous pouvez rencontrer ce bug .

Si vous voulez rejouer ce fichier, vous pouvez utiliser :source! (avec le point d'exclamation) ou la touche -s de 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 lorsque Vim se termine, vous devez donc perdre votre session pour savoir ce que vous avez fait.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X