我怎样才能添加一个string到Vim每行的结尾?
我想添加*到Vim每行的末尾。 
我试了代码失败
 :%s/\n/*\n/g 
	
 :%s/$/\*/g 
 应该pipe用。 所以应该:%s/$/*/g正如MrWiggles指出的那样:%s/$/*/g 。 
甚至比search命令更短:
 :%norm A* 
这就是这个意思:
  % = for every line norm = type the following commands A* = append '*' to the end of current line 
也:
 :g/$/norm A* 
也:
 gg<Ctrl-v>G$A*<Esc> 
我认为使用视觉块模式是一种更好,更通用的方法来处理这种types的事情。 这是一个例子:
 这是第一行。 
 这是第二个。 
 第三。 
插入“Hello world”。 (空格+剪贴板)在每个这些行的结尾:
- 在第一行中的一个字符上,按下Ctrl-V(或Ctrl-Q,如果Ctrl-V粘贴)。
- 按jj将视觉区块延伸三行。
- 按$将可视块扩展到每行的末尾。 按A然后按空格键入Hello world。 +然后Esc。
结果是:
 这是第一行。 你好,世界。 
 这是第二个。 你好,世界。 
 第三。 你好,世界。 
(来自http://vim.wikia.com/wiki/Inserting_text_in_multiple_lines的示例);
如果你想在每一行的末尾添加Hello World:
 :%s/$/HelloWorld/ 
如果你想为特定的行数做这个,从20到30使用:
 :20,30s/$/HelloWorld/ 
如果你想在每一行的开始执行此操作,请使用:
 :20,30s/^/HelloWorld/ 
…并在每个行的前面添加*(开头)
 %s/^/*/g 
 你最终并不需要g 。 所以它变成: 
 :%s/$/* 
 或者,如果你只是想在14-18行的末尾加上* , 
 :14,18s/$/* 
要么
 :14,18norm A* 
一种select是:
:g/$/s//*
 这将find每一行结束锚,并用*代替。 我说“替代”,但实际上这更像是一个附加词,因为这个锚是一个特殊的东西,而不是一个普通的字符。 有关更多信息,请参见g的权力 – 示例 。 
:%S / \ N / * \ R / G
你的第一个在其他地方是正确的,但是由于某些原因,Vim必须有不同的换行符处理。
 %s/\s*$/\*/g 
这将做的伎俩,并确保领先的空间被忽略。