5

In Normal mode I use the following combination to edit multiple lines:

  1. Ctrl + v
  2. Select lines to edit
  3. Shift + i
  4. Edit line
  5. Esc

However, this method only applies changes to the first line if character deletion is not involved. Uncommenting a long block of code can thus become a small headache.

What is this method missing for multi-line deletion? Or should a different method be applied.

10
  • What do you mean by "character deletion"? Do you mean using backspace? Why not use Ctrl+V to select the comment characters and then use x to delete that block? Also take a look at plug-ins such as vim-commentary which should make your life much easier!
    – filbranden
    Commented Jun 2, 2020 at 19:42
  • If you want to delete the characters you selected, you can use s to substitute your selection, then type in what you need. But as for commenting, I'd advocate vim-commentary as well.
    – Biggybi
    Commented Jun 3, 2020 at 3:05
  • 1
    I think your question is a duplicate of this one. However I had never noticed the behavior you mention before but it seems to indicate that you are using the insert mode for the wrong kind of operations (i.e. anything else than inserting new characters)
    – statox
    Commented Jun 3, 2020 at 8:19
  • 1
    @filbranden Your reply is close to an answer. The problem is that each I delete a character the block selection is reset and I need to select the block again. Commented Jun 4, 2020 at 8:08
  • 1
    @LuísdeSousa Your question is still unclear. Can you give us an example of initial text and final text so we can understand what exactly you're trying to accomplish? Please edit the question to include an example. Make sure you include "before" and "after". If you can, also include the sequence of steps you're using to accomplish that edit. Thanks!
    – filbranden
    Commented Jun 4, 2020 at 14:02

1 Answer 1

5

It seems you're using the backspace key in insert mode to delete the comments. As you found out, this will not really work at all in visual block mode.

Instead, you can simply use the x or d commands to delete a visual selection. See :help v_x.

If you want to delete multiple comment characters, you can make your visual block take up "n" columns to cover all the comment characters.

For example, if your comments are // and you have a blank space after the comments (so 3 characters total), then you can:

  1. Move to the // on the first line where you want comments removed.
  2. Use Ctrl+V to enter Visual Block mode.
  3. Move to the // on the last line where you want comments removed. You'll have a n x 1 block, with "n" lines and one column.
  4. Move to the blank right after the //, with a command such as 2l or fSpace, now you'll have a n x 3 visual block.
  5. Use x or d. This will remove the contents of the visual block, with the comments.

You might also want to consider adopting a plug-in to help inserting, removing or toggling comments. I can recommend vim-commentary which does a great job. This (and similar plug-ins) are typically also able to figure out which style of comments you need for the language you're using, so they typically require zero configuration other than having your plug-in manager install and enable them.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.