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

Léo*_* 준영 247 regex vim replace match

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

我尝试了代码失败了

:%s/\n/*\n/g
Run Code Online (Sandbox Code Playgroud)

dir*_*tly 339

:%s/$/\*/g

应该管用.因此,应该:%s/$/*/gMrWiggles正确地指出.

  • +1.没有必要在替换tho中逃避星号 (12认同)
  • 每行只有1个EOL,因此不需要`g`标志. (9认同)
  • 对.但是,一个人对我来说更具可读性. (4认同)

Cyb*_*ira 332

甚至比:search命令更短:

:%norm A*
Run Code Online (Sandbox Code Playgroud)

这就是它的含义:

 %       = for every line
 norm    = type the following commands
 A*      = append '*' to the end of current line
Run Code Online (Sandbox Code Playgroud)

  • 男人,没有vi或vim线程,我从中没有学到什么东西.今天我学习了规范.正如他们在干杯中所说,"常态!" (27认同)
  • _另外一个提示:_这也适用于范围.只需在视觉模式中突出显示这些线条并按下`:`,这将使用`:'<,'>`预先填充命令,然后您可以将其命名为`:'<,'> norm A*` (22认同)
  • 作为[VimGolfer](http://vimgolf.com),我忍不住补充一点,使用`I*`而不是`0i*`将为您节省一次击键. (6认同)
  • 对于前置,使用"I"代替 - ":%norm I*` (5认同)
  • 对于前置,你只需使用0i*,0带你到行的开头,i用于插入模式,*用于*.d: (4认同)

小智 32

我认为使用视觉块模式是一种更好,更通用的方法来处理这类事物.这是一个例子:

这是第一行.
这是第二个.
第三.

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

  • 在第一行中的字符上,按Ctrl-V(如果Ctrl-V为粘贴,则按Ctrl-Q).
  • 按jj将视觉块扩展到三行.
  • 按$将可视块扩展到每行的末尾.按A然后按空格键,然后键入Hello world.+然后Esc.

结果是:

这是第一行.你好,世界.
这是第二个.你好,世界.
第三.你好,世界.

(例如来自http://vim.wikia.com/wiki/Inserting_text_in_multiple_lines)

  • 不是按下`jj`,而是可以点击`G`移动到最后一行.这在大型文件中非常有用,其中按下`j`直到你到达最后一行是不切实际的. (2认同)

小智 10

如果你想在每一行的末尾添加Hello world:

:%s/$/HelloWorld/
Run Code Online (Sandbox Code Playgroud)

如果你想对特定的行数说,从20到30使用:

:20,30s/$/HelloWorld/
Run Code Online (Sandbox Code Playgroud)

如果你想在每一行的开头做这个,那么使用:

:20,30s/^/HelloWorld/
Run Code Online (Sandbox Code Playgroud)


pax*_*blo 5

一种选择是:

:g/$/s//*

这将找到每条线的末端锚点并用代替*。我说“替代”,但实际上,它更多地是附加内容,因为锚是特殊的东西,而不是常规字符。有关更多信息,请参见g的幂-示例


Joh*_*der 5

...并在每行前加上(添加开头),

%s/^/*/g
Run Code Online (Sandbox Code Playgroud)


小智 5

你真的不需要g最后的.所以它变成:

:%s/$/*
Run Code Online (Sandbox Code Playgroud)

或者,如果你只是想要*结束,请说第14-18行:

:14,18s/$/*
Run Code Online (Sandbox Code Playgroud)

要么

:14,18norm A*
Run Code Online (Sandbox Code Playgroud)