0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Atom】git diffで判明した不可視文字(タブ・スペース)の対処方法

Last updated at Posted at 2018-08-11

Atomとは

有名なテキストエディタです。宇宙服のOctocatかわいい。

Atom公式サイト

記事を書いたきっかけ

git diffで差分をチェックしたら、コードを全く変更していないはずの箇所が表示されたから。こんな感じ。
qiita01.png

その後、今回紹介するのAtomの機能を使い、不可視文字(タブ・スペース)が原因と判明。さらに、勝手に不可視文字が除去されていたことが分かった。

スマートに解決できたわけではありませんが、忘れないうちに書き記しておこうと思った次第です。

不可視文字は、目には見えない

初期設定のままだと不可視文字が表示されません。それを変更します。

タブと半角スペースの表示

メインメニューからPreferencesを選択
qiita02.png

Settingsが開くのでEditorタブを選択し、Show Invisiblesをチェックする。
qiita03.png

これでタブと半角スペースが視覚的に表示されます。

タブと半角スペースの区別

初期設定のままでは、タブと半角スペースの表示が同じになってしまいました。

しかし、これについては決定的な解決策が見つかりませんでした。本来は以下のように区別して表示されるはずなんですが・・・
qiita04.png

ここでちょっと気になる機能があったので、ご紹介します。

shift+command+P(Mac)またはShift+Ctrl+P(Windows)コマンドパレットを開き、convertと入力します。

Whitespace:Convert Spaces To Tabsを選択し、Enterで確定します。これ以降、タブと半角スペースの表示が区別されます。
qiita05.png

しかし、この方法ではAtomを再起動した時に設定が元に戻ってしまいます。しかもファイルごとに実行する必要があります。

さらにメニュー自体がスペースをタブに一括して変更する機能なので、スペースのままにしておきたい部分もタブに変更されてしまいます。

あくまで参考に・・・

全角スペースの表示

全角スペースは上記の方法では表示できません。そのためshow-ideographic-space
というパッケージをインストールして表示させます。

SettingsInstallタブから検索し、インストールします。
qiita06.png

これで作業完了です。全角スペースがで表示されるようになります。

注意点

phpファイルではタブと半角スペースの表示が区別されましたが、htmlファイルでは区別がされませんでした。

自分が見落としている機能もあると思いますが、無ければ別の方法を考えた方が良いかもしれませんね・・・。

個人的にはEditorConfigを試したい。以下、参考記事です。

ATOM Editor をそろそろ始めようか

不可視文字は、残したい

不可視文字の箇所は分かりました。しかしgit diffでまだ表示されてしまう。

これはAtomの不可視文字除去機能(?)が原因でした。ちなみに除去される瞬間は、保存のタイミングで一瞬確認できます。

以下の記事を参考にしました。

Atomで保存時の処理の設定を変更する

この機能が必要な場合もあるかもしれませんが、今回の作業は既存のコードの修正だったので、機能そのものを停止しました。

SettingsPackagesを選択し、whitespaceと入力。Settingsをクリックする。
qiita07.png

Remove Trailing Whitespaceのチェックを外す。
qiita08.png

これで不可視文字はそのまま残ります。

タブVSスペース

どちらを使用するか、あらかじめ職場内・プロジェクト内で確認しておいた方が良いです。ちなみに自分の周辺はスペース派多し。

仮にタブ・スペースが入り混じったファイルがあったとしても、修正すればgit diffで全て表示されてしまいます。ファイルをそのままにしておくか、もし修正するならそのタイミングはどうするか、これも要相談だと思います。

ちょっとした疑問

タブ、スペースは正確には何と言うのでしょうか?(今回は不可視文字で統一しましたが。)

不可視文字?制御文字?空白?whitespace?

まとめ

今回の件は、自分一人の作業であればさほど気にする必要はないかもしれません。しかし、コードレビューなど他人に見られる状況であれば、無視できないことだと思います。加えて、不可視文字が予期しない動作を引き起こす可能性もあります。

防げるものは防ぎ、円滑な作業を目指しましょう〜(^ω^)

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?