如何在Vim中每一行的末尾添加一个字符串?

我想在Vim中每一行的末尾添加*

我尝试了该代码,但没有成功

:%s/\n/*\n/g
344807 次浏览
:%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结尾。所以它变成:

:%s/$/*

或者,如果你只是想要*在末尾,说第14-18行:

:14,18s/$/*

:14,18norm A*

我认为使用可视块模式是处理这类事情的更好、更通用的方法。这里有一个例子:

This is the First line.
This is the second.
The third.

插入“Hello world”。(空格+剪贴板)在每一行的末尾:

  • 对第一行中的一个字符,按Ctrl-V(如果按Ctrl-V,则按Ctrl-Q) 是粘贴)。李< / >
  • 按jj将可视块扩展到三行。
  • 按$将可视块扩展到每行的末尾。按下一个 然后空格,然后输入Hello world。
  • . +然后Esc

结果是:

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/