VSCode派の皆さんこんにちは!
Sakura Editer派、Vim派、その他いろいろ派の皆さんもこんにちは。
テキストエディタはみんなちがって、みんないい。
本稿では世にも奇妙な改行コードにまつわる怪談について語らせていただく。
これは実際に起きた本当の話である。
改行コードについて
まずは簡単に改行コードについておさらい。
改行コードには3種類あります。簡単に表にするとこんな感じ。
| 種類 | 正規表現 | 使用OS |
|---|---|---|
| CR | \r |
昔のMac |
| LF | \n |
最近のMac、Linux |
| CRLF | \r\n |
Windows |
VSCodeでグレップしてみる
試しにあるドキュメントファイルを\nでグレップしてみます。
ちゃんと正規表現の検索をOnにしてくださいね。

各行末に\nがあるのがわかりますね。
続いて\rでグレップしてみましょう。

行末に\nがあって\rがないのでLFにな・・・っていません。実は。
せっかくなのでダメもとで\r\nもグレップしてみましょうよ。

まぁなんもかからないですよね。
よく見るとVSCodeの改行コードはCRLFになってましたね!

ちなみにここをクリックするとLFなどに切り替えることができます。
VSCodeの力ってスゲー!
?「あれ、でもCRLFなら\rとか\r\nが引っかかるはずでは?」
VSCodeの改行検索の仕様
こちらを参考にしてください。
翻訳するとこんな感じ。
検索ウィジェットで、正規表現モードでファイル内のEOL列(
\nまたは\r\n)をターゲットにすることができます。\r\nのEOLシーケンスの\rのみをターゲットにすることはできません。これは、誤って混在した行末が作成されるのを防ぐために実施しています。
つまり\rでグレップできないのは意図的な仕様ということでした。
改行コードに寄らず改行は\nのみでグレップできます。
これで改行コードを変換したいとき、グレップによる置換はできないことがわかりましたね。
したがって、1ファイルずつWindow右下のボタンをポチポチして変換することになりそうですね
VSCodeで改行コードを変更するときは右下のCRLF(またはLF)ボタンをクリックして変更しましょう!
まとめ
筆者はグレップでまとめて置換!みたいなのを別のエディタでやってたので、無意識にグレップによる置換を試みて爆散しました。
意外と落とし穴なので、皆様も気を付けてください。