2011-05-22 69 views
11
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 

我希望能夠插入條形碼字符而不必手動去插入它。 儘管這在語法上不正確,但應該是降價。如何在Vim的特定列上的所有行上插入特定字符?

回答

16

我只是個初學者,但這裏是我做的:

  • C-v到(在Windows上使用C-q
  • 選擇欄中輸入Visual Block(運動鍵hjkl
  • I
  • 輸入文字
  • Esc
+7

對於此任務,我可能會使用'r |'而不是'I | '。它*用下一個輸入的字符替換光標下的每個字符。我還建議將['virtualedit'](http://vimdoc.sourceforge.net/htmldoc/options.html#'virtualedit')設置爲'block '(':set ve = block'),它允許你創建一個列選擇,以便在行尾字符之後延伸。 – nelstrom 2011-05-22 20:47:55

+1

@nelstrom酷,發佈它作爲一個答案。當我需要輸入多個字符(而不是替換現有的東西)時,我正在考慮一般情況。 – cnicutar 2011-05-22 20:49:54

+0

很好的回答!我實際上正在考慮做幾乎相同的事情,但有一個問題。由於Visual模式需要*東西*來選擇,並且名稱後面沒有空格或任何空格,所以不會選擇該列。我不確定我是否有意義。 ** Ninjaedit ** @DigitalRoss下面的答案*正是*我正在尋找。它附加空格/空白到解決問題的每一行,雖然它有點冗長:) – saif 2011-05-23 07:23:37

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

一些注意事項:

  • 你需要在每行前的:如果你是在VI的正常視覺模式
  • 或者,你可以把這些命令在命令文件和類型$ ex file < cmds但在這種情況下添加一個x作爲第四行
  • 這工作通過追加空白到每一行,然後更改正確的一個|對於還沒有|的行,然後刪除任何尾隨空格
相關問題