22
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「あの赤い丸 ⛔️」を消せ!RubyMine (およびJetBrains系IDE、VS Code、Vim) でファイルの末尾に改行文字を自動的に付与する設定

Last updated at Posted at 2024-04-13

はじめに

GitHubでプルリクエストのコードレビューをしたりすると、たまにこんな赤い丸⛔️を見かけませんか?

Screenshot 2024-04-13 at 11.23.24.png

これはファイルの末尾が改行文字で終わっていないことを示す警告マークです。

改行文字を \n で可視化するなら、本来は

  end\n
end\n

こうなっているべきなのに、実際は

  end\n
end

こうなって保存されている、ということです。

実際問題、ファイル末尾が改行文字で終わっていないからといってプログラムがおかしな動きをするということは滅多にありません。
ですが、POSIX1の規格では「テキストファイルの末尾は改行文字で終わらないといけない」と決まっているため2、どこかで思いがけないトラブルが起きるかもしれません。

たとえば、上の画像に示したfizz_buzz.rbは一見11行あるように見えますが、wcコマンドで行数を調べると「10行」と表示されます。

# ファイルの末尾が改行文字で終わっていない場合
$ wc fizz_buzz.rb 
      10      28     137 fizz_buzz.rb

ファイルの末尾が改行文字で終わっていれば11行と表示されます。

# ファイルの末尾が改行文字で終わっている場合
$ wc fizz_buzz.rb 
      11      28     138 fizz_buzz.rb

こんな感じでファイルの末尾が改行文字で終わっていないと「あれ?」と思うような不思議な挙動に遭遇する可能性があります。

とはいえ、人間がいちいちファイルの末尾は改行文字で終わらせようと努力するのは非効率です。
エディタやIDEの設定で自動的に改行文字が付与されるようにしましょう。

RubyMineで自動的に改行文字を付与する設定はどこ?

RubyMineであれば、

Settings > Editor > General > Ensure every saved file ends with a line break

のチェックをオンにすれば自動的に改行文字が付与されます。

rm.png

RubyMineに限らず、JetBrains社製のIDEであればどれも同じ設定でいけるはずです。

  • IntelliJ IDEA
  • PyCharm
  • WebStorm
  • PhpStorm
  • AppCode
  • CLion
  • DataGrip
  • Rider
  • GoLand
  • etc

VS Codeの場合は?

VS Code (Visual Studio Code) の場合は、

Settings > "Insert Final Newline" で検索 > Insert Final Newline

のチェックをオンにすれば自動的に改行文字が付与されます。

Screenshot 2024-04-13 at 12.06.19.png

Vimの場合は?

Vimはデフォルトで末尾に改行文字が付与されます。

あえてその動作をオフにするオプションもあるみたいですが、特別な理由がない限り、わざわざ設定する必要はないでしょう。

まとめ

というわけでこの記事ではRubyMine (およびJetBrains系IDE、VS Code、Vim) でファイルの末尾に改行文字を自動的に付与する設定を紹介しました。

一度設定を入れてしまえばあとは何も考えずに済むのですが、この設定を入れていない人も多いのか、コードレビューをしているとまあまあの頻度で「あの赤い丸⛔️」に遭遇します。

みなさんが使っているエディタやIDEで、ちゃんとこの設定が入っているかチェックしてみてください。
また、コードレビュー中に「あの赤い丸⛔️」を見かけたらこの記事のURLを教えて「ちゃんと設定しておこうね!」と伝えてやってください😄

Screenshot 2024-04-13 at 12.16.14.png

  1. Portable Operating System Interface=オペレーティングシステム (OS) の標準的なインタフェースおよび環境を定義するIEEE規格

  2. https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206

22
18
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?