1. ホーム
  2. vim

[解決済み] Vimで文字を改行で置き換える方法

2022-03-18 11:26:03

質問

をそれぞれ置き換えようとしています。 , を新しい行に置き換えます。

:%s/,/\n/g 

のようなものが挿入されますが ^@ 実際の改行ではありません。このファイルはDOSモードでも何でもありません。

どうしたらいいのでしょうか?

私のように気になる方は、質問をチェックしてみてください。 Vimの場合、なぜ୧⃛(๑⃙⃘◡̈๑⃙⃘) にも対応しています。

解決方法は?

使用方法 \r の代わりに \n .

で代入する。 \n は、テキストにヌル文字を挿入します。改行するには \r . このとき 検索 を使用すると、改行があっても \n しかし この非対称性の原因は \n\r 少し違うことをする :

\n は行末(改行)にマッチするのに対して \r はキャリッジリターンにマッチします。一方,代入では \n はヌル文字を挿入するのに対し \r は改行を挿入する(より正確には、入力の CR ). これを説明するために、Vimのコマンドライン機能(言い換えれば、以下をターミナルにコピー&ペーストして実行する)を使った小さな、非インタラクティブな例を紹介します。 xxd は、出来上がったファイルのヘキサダンプを表示しています。

echo bar > test
(echo 'Before:'; xxd test) > output.txt
vim test '+s/b/\n/' '+s/a/\r/' +wq
(echo 'After:'; xxd test) >> output.txt
more output.txt

Before:
0000000: 6261 720a                                bar.
After:
0000000: 000a 720a                                ..r.

言い換えると \n は、テキストに0x00というバイトを挿入しています。 \r は0x0aというバイトを挿入しています。