なぜ '\r'('\n' ではない) は 'vim' の改行文字を置き換えるのですか?

なぜ '\r'('\n' ではない) は 'vim' の改行文字を置き換えるのですか?

vimエディタでコマンドモードを使用して、改行文字(\n)を2つの改行文字()に置き換えたいと思います。\n\nvim

入力ファイルの内容:

This is my first line.
This is second line.
  • 私が試したコマンド:
    :%s/\n/\n\n/g
    
    ただし、以下のように文字列を不要な文字に置き換えます。
    This is my first line.^@^@This is second line.^@^@
    
  • その後、次のコマンドを試しました。
    :%s/\n/\r\r/g
    
    うまくいきます。

2番目のコマンドが正しく機能する理由を説明できますか?

ベストアンサー1

奇妙なこと\nに、vimでは代替改行を意味するのではなく、空であることを意味します。 ASCII nulは^@Ctrl+ @)です。

歴史的に、viは^MCtrl+ M)を改行文字の行終端に置き換えました。\rvimと同じようにC言語などの拡張機能がvimに追加されましたが、^M開発者は\nMeanをnullに設定することにしました。変えるテキスト。これは用途に合わない。探す、改行文字を検索します。

追加資料:

おすすめ記事