我想添加*
到 Vim 中每一行的末尾。
我尝试了代码不成功
:%s/\n/*\n/g
甚至比 :search 命令更短:
:%norm A*
这就是它的意思:
% = for every line
norm = type the following commands
A* = append '*' to the end of current line
:%s/$/\*/g
应该工作,所以应该:%s/$/*/g
。
我认为使用视觉块模式是处理这类事情的更好、更通用的方法。这是一个例子:
This is the First line.
This is the second.
The third.
插入“Hello world”。(空格+剪贴板)在每一行的末尾:
结果是:
This is the First line. Hello world.
This is the second. Hello world.
The third. Hello world.
(来自Vim.Wikia.com的示例)
还:
:g/$/norm A*
还:
gg<Ctrl-v>G$A*<Esc>
如果你想在每一行的末尾添加 Hello world:
:%s/$/HelloWorld/
如果您想针对特定的行数执行此操作,例如从 20 到 30,请使用:
:20,30s/$/HelloWorld/
如果您想在每行的开头执行此操作,请使用:
:20,30s/^/HelloWorld/
一种选择是:
:g/$/s//*
这将找到每个行结束锚并将其替换为*
. 我说的是“替代”,但实际上,它更像是一个附加,因为锚是一个特殊的东西,而不是一个常规字符。有关详细信息,请参阅g 的幂 - 示例。
最后你真的不需要g
。所以它变成:
:%s/$/*
或者,如果您只想*
在结尾处使用,例如第 14-18 行:
:14,18s/$/*
或者
:14,18norm A*
...并在每一行前面加上 *,
%s/^/*/g
:%s/\n/*\r/g
您的第一个在其他任何地方都是正确的,但由于某种原因,Vim 必须有不同的换行符处理。
%s/\s*$/\*/g
这将起到作用,并确保忽略前导空格。