294

*Vim の各行の末尾に追加したい。

コードを試してみましたが失敗しました

:%s/\n/*\n/g
4

10 に答える 10

410

:search コマンドよりもさらに短い:

:%norm A*

これが意味することは次のとおりです。

 %       = for every line
 norm    = type the following commands
 A*      = append '*' to the end of current line
于 2009-03-01T07:09:14.427 に答える
399
:%s/$/\*/g

動作するはず:%s/$/*/gです。

于 2009-02-27T11:53:48.630 に答える
59

ビジュアル ブロック モードを使用することは、この種のことを処理するためのより優れた、より用途の広い方法だと思います。次に例を示します。

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

「Hello world」を挿入します。(スペース + クリップボード) これらの各行の末尾に:

  • 最初の行の文字で、Ctrl-V (または Ctrl-V が貼り付けの場合は Ctrl-Q) を押します。
  • jj を押して、ビジュアル ブロックを 3 行に拡張します。
  • $ を押して、ビジュアル ブロックを各行の最後まで拡張します。A を押してからスペースを押し、Hello world と入力します。+ の次に Esc。

結果は次のとおりです。

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

( Vim.Wikia.com の例)

于 2013-08-08T18:44:25.813 に答える
44

また:

:g/$/norm A*

また:

gg<Ctrl-v>G$A*<Esc>
于 2009-02-27T19:37:45.207 に答える
9

1 つのオプションは次のとおりです。

:g/$/s//*

これにより、すべての行末アンカーが検出され、 に置き換えられ*ます。「代替」と言っていますが、実際には、アンカーは通常の文字ではなく特別なものであるため、実際には追加のようなものです。詳細については、 g のべき乗 - 例 を参照してください。

于 2009-02-27T12:41:36.393 に答える
5

...そして、各行の先頭に * を追加 (先頭に追加) するには、

%s/^/*/g
于 2012-01-18T17:28:44.660 に答える
3
:%s/\n/*\r/g

あなたの最初のものはどこでも正しいですが、Vimは何らかの理由で異なる改行処理をしなければなりません.

于 2009-02-27T12:05:37.227 に答える
2
%s/\s*$/\*/g

これでうまくいき、先頭のスペースが確実に無視されるようになります。

于 2009-02-27T11:59:23.763 に答える