Vimで1文字を改行で置き換える方法
現在のファイルの各 ,
を改行で置き換えようとしています。
:%s/,/\n/g
しかし、実際の改行ではなく、^@
のようなものが挿入されます。このファイルはDOSモードでも何でもない。
どうしたらいいですか?
私のように好奇心旺盛な方は、質問 Why is \r a newline for Vim? もチェックしてみてください。
1859
3
現在のファイルの各 ,
を改行で置き換えようとしています。
:%s/,/\n/g
しかし、実際の改行ではなく、^@
のようなものが挿入されます。このファイルはDOSモードでも何でもない。
どうしたらいいですか?
私のように好奇心旺盛な方は、質問 Why is \r a newline for Vim? もチェックしてみてください。
Use
\\r
instead ofn
.n
で代入すると、テキストにNULL文字が挿入されます。改行を得るには、``r
を使います。しかし、改行を検索するときには、やはり\n
を使います。この非対称性は、n` と
r` が doing slightly different things であることに起因しています。つまり、
n` は行末(改行)にマッチし、
rはキャリッジリターンにマッチするのです。一方、代入では、``n
は NULL 文字を挿入するのに対し、`r
は改行を挿入します(正確には、という入力として扱われます)。これを説明するために、Vim のコマンドライン機能を使った、小さな、非インタラクティブな例を紹介します (言い換えれば、以下の内容をターミナルにコピー&ペーストして実行することができます)。xxd` は結果のファイルのヘックスダンプを示しています。つまり、
n`は0x00というバイトを、
r`は0x0aというバイトをテキストに挿入したことになります。を使用する必要があります。
M`の文字を取得するには、Ctrl vの後にEnterを押します。
ここでの作業は`
r
が代行してくれます。