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)ボタンをクリックして変更しましょう!
まとめ
筆者はグレップでまとめて置換!みたいなのを別のエディタでやってたので、無意識にグレップによる置換を試みて爆散しました。
意外と落とし穴なので、皆様も気を付けてください。