Lorsque vous utilisez set showcmd
Vim, les commandes partielles s'affichent sur la dernière ligne de l'écran. Par exemple, en mode normal lors de la saisie de la commande, dt.
la dernière ligne s'affiche dt
, puis lorsque vous appuyez sur .
la commande est terminée et donc rien n'est affiché.
Existe-t-il un moyen d'afficher les commandes complètes? Par exemple, lors de la frappe dt.gU(
, le premier dt.
sera affiché; et lorsque vous commencez à taper la deuxième commande, la première est effacée, de sorte qu'à la fin, seul gU(
s'affiche.
Cela pourrait être utile, par exemple, pour illustrer des GIF; et pour vérifier que vous avez tapé ce que vous vouliez si vous faites face à un résultat inattendu.
options
command-history
Gonçalo Ribeiro
la source
la source
dt
s'affiche car il s'agit de l'opérateur actuel en attente. Une fois qu'il a reçu une motion, ce n'est plus un opérateur en attente. Supposons que nous allions plus loin et que nous ayons fait quelquedt.gU(gu)daw
chose. Est-ce que tout cela est "une commande complète", ou est-ce quatre commandes complètes, ou autre chose?dt.gU(
y a 2 commandes:dt.
etgU(
.... Donc, ce que vous voulez vraiment, c'est afficher une sorte d'historique des commandes (Vim montre déjà les "comamnds complets").src/normal.c
les appels de codeclear_showcmd()
à plusieurs endroits (normal_cmd()
,do_pending_operator()
,end_visual_mode()
). Je joue avec le dumping dans un fichiershowcmd_buf
à ces points, ce qui semblait assez bon, mais me fait à peu près sûr que vous ne pouvez pas obtenir ce que vous voulez sans modifier de la même manière le code source de Vim et le reconstruire. Bien sûr, cela pourrait valoir la peine de créer vos gifs.Réponses:
Je n'ai trouvé aucun moyen de le faire dans un Vim ordinaire. Cependant, si vous êtes prêt à patcher Vim, ce qui suit peut fonctionner pour vous.
Le correctif très simple (appliqué contre Vim-7.4.052) désactive la mise à jour réelle de l'écran qui efface l'historique à la fin d'une commande normale. Il le fait en retournant s'il
showcmd_is_clear
est défini ou non avant la mise à jour de l'affichage. (Alternativement, vous pouvez commenter l'instruction if et ne laisser que lareturn
ligne d' origine . note : Le patch ci-dessous ne s'est pas très bien collé; vous devrez peut-être l'appliquer à la main, bien qu'il ne s'agisse que d'une ligne courte. note : Je n'ai pas commenté le réeldisplay_showcmd()
car il semble être utilisé en mode visuel pour mettre à jour l'affichage du nombre de lignes sélectionnées ou d'autres choses éventuellement. Je n'ai pas beaucoup testé cela.Le résultat ressemble à ceci:
Quelques choses intéressantes à noter:
j
,k
,b
, etc.x
commande devientdl
en fait dans le showcmd_buf.:
commande ou en entrant en mode d'insertion (au moins dans ma configuration))"
, mais ma séquence de touches est visible dans la fenêtre vim pour mon long yank spécifié.^[
dans la zone showcmdla source
En dehors de la solution John , il existe une autre façon d'afficher toutes les frappes vim qui ont été enfoncées en utilisant un
-w
paramètre qui enregistre tous les caractères que vous tapez dans le fichier. Le problème est que vim écrit les frappes uniquement lorsque vous quittez Vim. C'est ainsi que VimGolf fonctionne.Pour contourner ce problème, Kana Natsuno a proposé ce correctif à ligne unique , qui désactive la mise en mémoire tampon de l'
-w
option, de sorte que vous avez accès à un flux de frappes en temps réel. Ensuite, il s'agit de les lire (par exempletail -f
), d'analyser ou vous pouvez essayer de les afficher dans la barre d'état (:set statusline
).Découvrez une version personnalisée de Vim à l'aide de la branche de frappe en direct de MacVim de Drew, pour obtenir le flux de frappes en temps réel.
Source: Vimprint - un analyseur de frappe Vim sur le blog Drew Neil
Ceci est utile si vous souhaitez révéler les touches enfoncées par Vim dans des didacticiels vidéo ou GIF.
la source