Dans Vim (7.2), il existe une commande en mode normal r
pour remplacer un seul caractère par un autre. Par exemple, la saisie rX
remplacera le seul caractère sous le curseur par X
puis vous ramènera en mode normal.
Existe-t-il une commande en mode normal pour insérer un seul caractère, puis revenir en mode normal?
Réponses:
MelBurslan a raison de dire que cette fonctionnalité n'existe pas en mode natif, mais la création d'une commande définie par l'utilisateur n'est pas vraiment la voie à suivre pour la créer. J'ai bricolé pendant quelques minutes et j'ai trouvé ceci:
Ce qui utilise une supercherie Vim impliquant "mettre" du texte à partir d'un registre, dans ce cas le registre "expression". L'expression étant branchée dans le registre est "
nr2char(getchar())
" qui renverra une chaîne de caractères unique.La raison pour laquelle j'ai construit le mappage de cette façon est que l'obtention de l'entrée utilisateur "à mi-chemin" d'un mappage est délicate et peut se comporter de manière imprévisible; même ce mappage déposera le curseur dans la zone d'état en attendant que l'utilisateur tape un caractère.
la source
Merci à Johnny de nous avoir donné cette formidable réponse dans les commentaires ci-dessous:
Cela mappe Control + i pour insérer un seul caractère, et il le fait de manière très concise.
Dans votre fichier vimrc, cela ressemblera à:
J'ai changé mon mappage pour utiliser l'espace, et vous pouvez changer le vôtre en votre clé préférée:
la source
Pour autant que je sache, il n'existe aucune fonction de ce type dans une incarnation largement distribuée de l'éditeur vi, mais vim a la possibilité de créer des commandes personnalisées. Il a déjà été discuté ici: dans ce fil
Vous pourrez peut-être créer votre commande personnalisée en faisant ce que vous souhaitez faire.
la source
Une façon simple de le faire est d'utiliser les commandes Couper xet Placer p. Disons que
*
c'est le caractère que vous souhaitez insérer. Insérez-le en utilisant i * Esc. Puis frappez x. Cela coupera le personnage. Maintenant, vous pouvez frapper ppour mettre le caractère unique. Si vous avez besoin d'insérer ce caractère 300 fois, vous pouvez taper:300p
.la source