Change the next N characters in VIM

MrB picture MrB · Aug 30, 2011 · Viewed 30.2k times · Source

Say I have the following line:

|add_test()          (| == cursor position)

And want to replace the 'add' with a 'del'.

del|_test()

I can either press X three times and then press i to insert and type del. What I want is something like 3c or 3r to overwrite just 3 characters. Both of these don't do what I want, 3c overwrites 3 characters with the same character, 3r does several other things.

Is there an easy way to do this without manually Xing and inserting the text?

Answer

dash-tom-bang picture dash-tom-bang · Aug 30, 2011

3s, "substitute 3 characters" is the same as c3l. 3cl and c3l should be the same, I don't know why you'd see the same character repeated. I'm also a fan of using t, e.g. ct_ as another poster mentioned, then I don't have to count characters and can just type "del".

I struggled with the "replace a couple of characters" for a few days too; 'r' was great for single characters, R was great for a string of matching length, but I wanted something like the OP is asking for. So, I typed :help x and read for a while, it turns out that the description of s and S are just a couple of pages down from x.

In other words, :help is your friend. Read and learn.