saif
saif

Reputation: 243

How do I insert a specific character along all lines on a specific column in Vim?

 Dates
=======

 Name                                   | Date
-------------------------------------------------
* Battle of the Plains of Abraham       | September 13, 1759
* Proclamation Act                      | October   07, 1763
* Stamp Act                             | March     22, 1765
* Guy Carleton becomes Governor         | April     07, 1766
* Boston Tea Party                      | December  16, 1773
* Quebec Act                            |
* Declaration of Independance           | <====== # How do I insert this bar character
* Treaty of Paris                                 # along the whole column?
* Constitutional Act                
* French Revolution                 
* War of 1812

I want to be able to insert that bar character without having to manually go and insert it. While this is not syntactically correct, this is supposed to be markdown.

Upvotes: 16

Views: 8835

Answers (2)

DigitalRoss
DigitalRoss

Reputation: 146053

%s/$/                                        /
v/|/s/^\(........................................\)/\1|/
%s/  *$//

Some notes:

  • You will need a : in front of each line if you are in vi's normal visual mode
  • Alternatively, you can put those commands in a command file and type $ ex file < cmds but in that case add an x as the fourth line
  • This works by appending blanks to each line, then changing the right one to a | for lines that don't already have a |, and then deleting any trailing blanks

Upvotes: 4

cnicutar
cnicutar

Reputation: 182619

I'm only a beginner, but here's what I do:

  • C-v to enter Visual Block (Use C-q on windows)
  • Select column (motion keys hjkl)
  • I
  • Enter text
  • Esc

Upvotes: 22

Related Questions