72 votes

Changer les N prochains caractères dans VIM

Dire que j'ai la ligne suivante:

|add_test()          (| == cursor position)

Et souhaitez remplacer les 'ajouter' avec un 'del'.

del|_test()

Je peux appuyez sur X trois fois, puis appuyez sur i pour insertion et de type del. Ce que je veux, c'est quelque chose comme 3c ou 3r pour remplacer seulement 3 caractères. Ces deux ne font pas ce que je veux, 3c écrase sur 3 caractères avec la même caractère, 3r n'plusieurs autres choses.

Est-il un moyen facile de le faire sans manuellement Xing et d'insérer le texte?

114voto

dash-tom-bang Points 9384

3s, "substitut de 3 caractères" est le même que c3l. 3cl et c3l devrait être le même, je ne sais pas pourquoi vous auriez du voir le même caractère répété. Je suis aussi un fan de l'utilisation de t, par exemple, ct_ comme une autre affiche mentionnée, alors je n'ai pas à compter les caractères, il suffit de taper "del".

J'ai du mal avec le "remplacement d'un couple de personnages" pour quelques jours de trop; 'r' est idéal pour les caractères unique, R a été grande pour une chaîne de correspondance de longueur, mais je voulais quelque chose comme l'OP demande. Donc, j'ai tapé :help x et de lire pendant un certain temps, il s'avère que la description de l' s et S sont juste un couple de pages de x.

En d'autres termes, :help est votre ami. Lire et apprendre.

30voto

lumberjack Points 153

Utiliser c{motion} commande:

  1. cf_ - changement jusqu'à la première '_' (y compris);
  2. ct_ de changement jusqu'à la première '_' (à l'exclusion);
  3. cw - de modifier le premier mot;

Le mot est déterminé par iskeyword variable. Vérifier avec :set iskeyword? et de supprimer tout '_', comme ça :set iskeyword=@,48-57,192-255. Par la façon de voir :c et :aider le mouvement si vous en voulez plus.

10voto

ajk Points 667

Je pense que 3cl est ce que vous voulez. Cela change 3 caractères à droite. Je taperais ct_del<esc> , mais ce n'est pas ce que vous avez demandé

8voto

Keith Thompson Points 85120

c3  ('c', '3', espace), puis tapez les caractères que vous souhaitez insérer. (Ou vous pouvez utiliser right-arrow ou l plutôt que l'espace.)

Ou, comme @Mike vient de le dire dans un commentaire, Control-R R fonctionne correctement si le nombre de caractères correspond au nombre de caractères que vous supprimez.

Ou ct_ pour passer du curseur au caractère _ .

5voto

skeept Points 4459

Si les travaux ont la même longueur, vous pouvez utiliser la commande R qui remplace ce que vous aviez précédemment avec ce que vous tapez.

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