Vim の各行の末尾に文字列を追加するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/594448

  •  09-09-2019
  •  | 
  •  

質問

追加したい * 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

これはトリックを行うと、先頭のスペースは無視されていることを確認します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top