我想在Vim中每一行的末尾添加*。
*
我尝试了该代码,但没有成功
:%s/\n/*\n/g
:%s/$/\*/g
应该工作,所以应该:%s/$/*/g。
:%s/$/*/g
%s/\s*$/\*/g
这将达到目的,并确保前面的空格被忽略。
:%s/\n/*\r/g
Your first one is correct anywhere else, but Vim has to have different newline handling for some reason.
一种选择是:
:g/$/s//*
这将找到每一行结束锚,并用*替换它。我说“替代”,但实际上,它更像是一个追加,因为锚是一个特殊的东西,而不是一个常规字符。有关更多信息,请参见g的幂-例子。
另外:
:g/$/norm A*
gg<Ctrl-v>G$A*<Esc>
甚至比:search命令还短:
:%norm A*
它的意思是:
% = for every line norm = type the following commands A* = append '*' to the end of current line
...在每一行的开头加上*,
%s/^/*/g
你并不真的需要g结尾。所以它变成:
g
:%s/$/*
或者,如果你只是想要*在末尾,说第14-18行:
:14,18s/$/*
或
:14,18norm A*
我认为使用可视块模式是处理这类事情的更好、更通用的方法。这里有一个例子:
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)
如果你想在每一行的末尾添加Hello world:
:%s/$/HelloWorld/
如果你想这样做的具体行数说,从20到30使用:
:20,30s/$/HelloWorld/
如果你想在每一行的开头这样做,那么使用:
:20,30s/^/HelloWorld/