Below example, first line is shorter than the other lines.
I want to insert \ to all lines at the highlighted place.
enter image description here

If I press CtrlC, jjj(select all lines) , Shifti, \, only first line changed.

enter image description here

How to get below result?
enter image description here

Notice: Don't want to use :s substitute command.

  • :h v_b_A if you want to have them aligned after the physical line end, you might need to :set virtualedit Dec 6, 2018 at 11:44

3 Answers 3


It could be done with virtualedit=ALL:

  1. set virtualedit=all
  2. select visually vertical part of the text
  3. A\<ESC>
  4. return set virtualedit=block

See the screen:

enter image description here

  • This also works with virtualedit=block. Start visual block mode at the end of the first line. Then move down to the last line. Finally move to the right as far as you want. Then enter A\<ESC>. No need to change virtualedit setting.
    – Ralf
    Dec 6, 2018 at 19:50
  • 1
    It's interesting that at Step 3, A\<ESC> works but I\<ESC> (with capital i) doesn't. Unlike in the visual block without virtual edit. May 24, 2020 at 14:03

The short answer is: In Visual Block mode select lines to their ends ($) and use A to append some text at the end of each line.

The longer answer:

  • gg to go the beginning of the first line.
  • CTRL-V (or the proper alternative CTRL-Q in e.g. gVim) to start blockwise visual selection.
  • jjj$ select all four lines down (jjj) and to the right until their individual ends ($).
  • A start appending some text ('\' in your case).
  • ESC

In fact this is not exactly your desired result, but functually equal and achievable with a minimum effort and time:

short line \
very long line \
very very long line \
short line \
  • I like this answer because it doesn’t require the fancy alignment: in my experience, alignment of line continuations is too much effort to maintain.
    – D. Ben Knoble
    Dec 6, 2018 at 19:32

This is a nice technique. Thanks Maxim Kim.

This description may be helpful. All codes are literal key entries except:

  • C-v for [control][v] keys combination
  • ESC for [escape] key

To insert (spaces that end with char: #) on a vertical line, with cursor anywhere on the first line:

:set ve=all         . enable full screen block cursor access
$                   . cursor to top right position for vertical line start
C-v                 . enable select (vertical line) mode
8j                  . move cursor down 8 lines (selects a vertical line)
s#ESC               . substitute # char in highlighted area, actuate by escape key
:set ve=            . restore default mode (mine is unset, could be: block)

notes: can also append a char or word using an uppercase key append: A, or use insert: I

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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