web-dev-qa-db-ja.com

Vimの各行の終わりに文字列を追加するにはどうすればいいですか?

Vimの各行の終わりに*を追加したい。

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

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

:%s/$/\*/g

うまくいくはずです。 :%s/$/*/g as MrWiggles が正しく指摘しているはずです。

319
dirkgently

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

:%norm A*

これはそれが意味するものです:

 %       = for every line
 norm    = type the following commands
 A*      = append '*' to the end of current line
320
Cyber Oliveira

また:

:g/$/norm A*

また:

gg<Ctrl-v>G$A*<Esc>
39
Brian Carper

私は、視覚的ブロックモードを使用することが、この種のことに対処するためのより優れた、そしてより用途の広い方法だと思います。これが例です:

これが最初の行です。
これは2番目です。
第3。

「こんにちは」を挿入する。これらの各行の終わりに(スペース+クリップボード):

  • 最初の行の文字で、Ctrl + Vキー(Ctrl + Vキーが貼り付けられている場合はCtrl + Qキー)を押します。
  • Jjを押して、視覚ブロックを3行に拡張します。
  • $を押すと、視覚ブロックを各行の末尾まで拡張できます。 Aを押してからスペースを押して、Hello worldと入力します。次にEscを押します。

年です。結果:

これが最初の行です。こんにちは世界。
これは2番目です。こんにちは世界。
第3。こんにちは世界。

http://vim.wikia.com/wiki/Inserting_text_in_multiple_linesからの例

26
nicole

各行の最後にHello worldを追加したい場合は、

:%s/$/HelloWorld/

特定の行数に対してこれを実行したい場合は、20から30までを使用します。

:20,30s/$/HelloWorld/

各行の先頭でこれを行いたい場合は、次のようにします。

:20,30s/^/HelloWorld/
10
utkarsh

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

%s/^/*/g
5
JohnnyCoder

あなたは本当に最後にgを必要としません。だからそれはになります:

:%s/$/*

あるいは、最後に*を付けたいだけなら、14行目から18行目を見てください。

:14,18s/$/*

または

:14,18norm A*
5
Pedro Norwego

一つの選択肢は:

:g/$/s//*

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

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

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

3
user42092
%s/\s*$/\*/g

これはうまくいくでしょう、そして先行スペースが無視されることを確実にします。

1
ng.