我怎样才能添加一个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
这将做的伎俩,并确保领先的空间被忽略。