Vimの各行の終わりに*
を追加したい。
私は失敗したコードを試してみました
:%s/\n/*\n/g
:%s/$/\*/g
うまくいくはずです。 :%s/$/*/g
as MrWiggles が正しく指摘しているはずです。
:searchコマンドよりもさらに短いです。
:%norm A*
これはそれが意味するものです:
% = for every line
norm = type the following commands
A* = append '*' to the end of current line
また:
:g/$/norm A*
また:
gg<Ctrl-v>G$A*<Esc>
私は、視覚的ブロックモードを使用することが、この種のことに対処するためのより優れた、そしてより用途の広い方法だと思います。これが例です:
これが最初の行です。
これは2番目です。
第3。
「こんにちは」を挿入する。これらの各行の終わりに(スペース+クリップボード):
年です。結果:
これが最初の行です。こんにちは世界。
これは2番目です。こんにちは世界。
第3。こんにちは世界。
( http://vim.wikia.com/wiki/Inserting_text_in_multiple_linesからの例 )
各行の最後にHello worldを追加したい場合は、
:%s/$/HelloWorld/
特定の行数に対してこれを実行したい場合は、20から30までを使用します。
:20,30s/$/HelloWorld/
各行の先頭でこれを行いたい場合は、次のようにします。
:20,30s/^/HelloWorld/
...そして各行の先頭に*を追加する(の先頭に追加する)
%s/^/*/g
あなたは本当に最後にg
を必要としません。だからそれはになります:
:%s/$/*
あるいは、最後に*
を付けたいだけなら、14行目から18行目を見てください。
:14,18s/$/*
または
:14,18norm A*
一つの選択肢は:
:g/$/s//*
これはすべての行末アンカーを見つけ、それを*
に置き換えます。私は「代用」と言っていますが、実際にはアンカーは通常の文字ではなく特別なものであるため、追加のようなものです。詳しくは、 gの累乗 - 例 を参照してください。
:%s/\ n/*\r/g
あなたの最初のものはどこか他のところで正しいです、しかしVimは何らかの理由で異なる改行処理をしなければなりません。
%s/\s*$/\*/g
これはうまくいくでしょう、そして先行スペースが無視されることを確実にします。