我想将*
添加到Vim中每行的末尾。
我尝试了代码失败
:%s/\n/*\n/g
答案 0 :(得分:318)
:%s/$/\*/g
应该有效。因此,:%s/$/*/g
MrWiggles应正确指出。
答案 1 :(得分:318)
甚至比:search命令还短:
:%norm A*
这就是它的含义:
% = for every line
norm = type the following commands
A* = append '*' to the end of current line
答案 2 :(得分:39)
此外:
:g/$/norm A*
此外:
gg<Ctrl-v>G$A*<Esc>
答案 3 :(得分:25)
我认为使用视觉模式是一种更好,更通用的方法来处理这类事物。这是一个例子:
这是第一行 这是第二个 第三个。
插入“Hello world”。 (空格+剪贴板)在每一行的末尾:
结果是:
这是第一行。你好世界。
这是第二个。你好世界。
第三。你好,世界。
(来自http://vim.wikia.com/wiki/Inserting_text_in_multiple_lines的例子)
答案 4 :(得分:10)
如果你想在每一行的末尾添加Hello world:
:%s/$/HelloWorld/
如果你想对特定的行数说,从20到30,请使用:
:20,30s/$/HelloWorld/
如果您想在每行开头执行此操作,请使用:
:20,30s/^/HelloWorld/
答案 5 :(得分:5)
最后你并不需要g
。所以它变成了:
:%s/$/*
或者如果您只想在结尾处使用*
,请说第14-18行:
:14,18s/$/*
或
:14,18norm A*
答案 6 :(得分:4)
一个选项是:
:g/$/s//*
这将找到每个行结束锚并用*
替换它。我说“替代”,但事实上,它更像是一个追加,因为锚是一个特殊的东西,而不是一个普通的角色。有关详细信息,请参阅Power of g - Examples。
答案 7 :(得分:3)
:%s/\n/*\r/g
你的第一个在其他任何地方都是正确的,但由于某种原因,Vim必须有不同的换行处理。
答案 8 :(得分:1)
%s/\s*$/\*/g
这将解决问题,并确保忽略前导空格。