Vim の各行の末尾に文字列を追加するにはどうすればよいですか?
質問
追加したい *
Vim の各行の最後まで。
コードを試してみましたが失敗しました
:%s/\n/*\n/g
解決
:%s/$/\*/g
動作するはずです。 MrWiggles のが正しく指摘するように:%s/$/*/g
必要があります。
他のヒント
よりもさらに短い:検索コマンド:
:%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。
「Hello World」を挿入します。 (Space + Clipboard)これらの各ラインの最後に:
- 最初の行の文字では、Ctrl-V(またはCtrl-Vが貼り付けられている場合はCtrl-Qを押します)を押します。
- jj を押してビジュアル ブロックを 3 行に拡張します。
- $ を押して、ビジュアル ブロックを各行の末尾まで拡張します。次にスペースを押してから、Hello Worldを入力します。+ を押してから Esc を押します。
結果は次のとおりです。
これが最初の行です。こんにちは世界。
これが 2 番目です。こんにちは世界。
第3。こんにちは世界。
(からの例 http://vim.wikia.com/wiki/Inserting_text_in_multiple_lines)
Uは、各行の終わりでこんにちは、世界を追加する場合:
:%s/$/HelloWorld/
あなたが行の特定の番号のためにこれをしたい場合は、20から30を使用し、言う:
:20,30s/$/HelloWorld/
uは、各行の先頭にこれをしたい場合は、使用します:
:20,30s/^/HelloWorld/
...と(の始まりを追加)*各ラインを付加するために、
%s/^/*/g
あなたは本当に終わりにg
を必要としません。だから、それはなります:
:%s/$/*
それとも、ただの終わりに*
をしたい場合は、行14-18言ってます:
:14,18s/$/*
または
:14,18norm A*
一つの選択肢があります:
:g/$/s//*
これは、すべての行の末尾のアンカーを見つけ、*
でそれを代用します。私は、「代替」と言うが、アンカーは特別なことではなく、通常の文字であるため、実際には、それはAPPENDのより多くのです。詳細については、Gのパワーを参照 - としてはを
:%s/\n/*\r/g
あなたの最初のものはどこにも正しいですが、Vimは、何らかの理由で別の改行の取り扱いを持っている必要があります。
%s/\s*$/\*/g
これはトリックを行うと、先頭のスペースは無視されていることを確認します。