Utiliser le retour arrière pour modifier la commande actuelle en mode normal?

9

Parfois, lorsque vous entrez une commande en mode normal, vous pouvez faire une faute de frappe, par exemple si j'ai l'intention de taper 10dk, je peux accidentellement commencer à taper 19d.

Étant donné que la commande n'a pas encore été exécutée / validée, est-il possible de supprimer les clés incorrectes en utilisant le retour arrière, en tant que tel:, au 19d<backspace><backspace>0dklieu d'avoir à appuyer sur Échap et réessayer la commande?

Question secondaire: existe-t-il un terme Vim pour la structure de données qui contient la commande actuelle avant qu'elle ne soit validée?

HellaMad
la source
1
Probablement, cela peut être demandé en tant que fonctionnalité dans les versions plus récentes!
SibiCoder
4
AFAIK pas possible - mais, comme ces séquences sont courtes, je ne sais pas quel gain une telle fonctionnalité accomplirait. Lorsque vous devez réessayer toute la séquence, au moins vous êtes "obligé" de la répéter jusqu'à ce que vous ne commettiez pas de telles erreurs;) (c'est-à-dire - répéter le caractère des builds! Jeu de mots voulu).
VanLaser
1
@VanLaser Le pire cauchemar d'un Vimmer est "forcé" de répéter quelque chose;) De plus, je crains de taper et d'avoir un clavier vierge, il n'est donc pas rare que je gâche une commande 256 fois avant de bien faire les choses.
HellaMad
4
Qu'est-ce qui pourrait mal tourner lorsqu'un mauvais dactylo utilise un clavier vierge?
romainl

Réponses:

3

Il n'y a aucun moyen de le faire et il est normal qu'il n'y en ait pas: les commandes en mode normal sont généralement assez courtes et peuvent être annulées Escsi vous le gâchez.

Une solution de contournement possible serait d'utiliser la :normalcommande. Cela rend le processus plus long mais par exemple si vous tapez :normal 10jdans la ligne de commande, Vim s'exécutera 10jcomme si vous l'avez tapé en mode normal. (Voir :h :normal)

Vous pouvez également ajouter ces lignes à votre .vimrc:

nnoremap <F4> :call NormalModeCommand()<CR>

function! NormalModeCommand()
    let command = input("Normal command: ")
    execute "normal " . command
endfunction

Ils créent un mappage (ici F4mais utilisez ce que vous voulez) qui appellera la fonction NormalModeCommand().

La fonction vous permet de taper une chaîne dans la ligne de commande, puis d'exécuter la chaîne que vous avez tapée en tant que commande en mode normal. Lorsque vous tapez la chaîne dans la ligne de commande, vous pouvez la corriger comme toutes les autres commandes. Bien sûr, ce n'est pas idéal, mais encore une fois, Vim n'est pas censé le faire.

statox
la source