2009年9月27日日曜日

行頭のタブを空白(スペース)に変換 - サクラエディタ, Notepad++, Eclipse, Emacs での使い方

1. ソースコードのインデントには タブ or 空白 ?

ソースコードにはタブよりも、空白を使う方が適している。

ただし、インデントはタブかホワイトスペースか? という議論がある。

[ThinkIT] 第5回:フォーマットに関するコーディング規約 (3/4) によると、

インデントにタブを使っていると、エディタの設定によって見た目が異なり、可読性が落ちる場合がありますので、タブのかわりに空白文字を使うとよいでしょう。この場合の空白文字の個数ですが、4文字にすると見やすくなります。

 

a. タブのほうが適切だという意見

これに対して、mieki256's diary - Rubyコーディング規約 には、空白よりもタブ派という意見が 2 つ引用されている。

_ インデント - ただのにっき (2003-02-13) :

はっきりいって、空白を使った固定インデントにはどうしても馴染めないのだよ。インデント幅なんて、見る人がいちばん気持ちがいい値に合わせられた方がいいに決まってるじゃないか。

_最速インターフェース研究会 :: タブとスペースと萌ディタの話

タブの幅を自分好みにしたいっていうと解決策は色々あるんだろうけど、一番手っ取り早いのはタブを使うことなんじゃないの?タブを使ってインデントしてればエディタの設定だけでファイルの内容に手を加えずに見た目だけ変えられるから楽。

コメント: もうやらなくていい昔のコーディングテクニックあれこれ – スラッシュドット・ジャパン には、

ソースコードにおけるインデントとは、プログラムの文書構造を視覚的に表現するための手段です。視覚的に表現できれば何でも良いのでタブでも空白4 文字でも8文字でも本来であれば問題ありません。しかしながら多くの場合、繰り返し流用や保守作業を続けていくと、空白で表現されたインデントは崩れやすく、コードブロックの判別が難しくなる傾向があります。6文字や7文字といった切りの悪い数の空白のインデントが散在し始めると、どこまでを一つのブロックと判断してよいのか分からなくなり、可読性を大きく損ないます。

タブの場合は、一文字でインデント一つを表現できるので保守性が向上します。また、タブが一文字削除されるとインデント一つ分大きく変動するので異常を即座に見つけやすいという利点もあります。

 

b. タブが問題となるのはパッチ

タブの問題点について言及している。

皆さんの多くがタブを使いがちなのは知っていますが、 実際問題、分散開発環境においては、cvs コミットメッセージがメーリングリストに送られるとき、 タブを使った場合、ほとんど読めないという事があるのです。

http://www.ingrid.org/jajakarta/cactus/xdoc/coding_conventions.xml  より)

404 Blog Not Found:タブのスペース化はタブ幅よりも重要である

君たちは、patchのことをきれいさぱーり忘れている。

人のコードを直したり、人にコードを直してもらったりしなくてもいいというのであれば、君たちのいい分ももっともだ。しかし、人とコードをやりとりする時にpatchをやりとりする場合、tabは頭が痛い以外の何者でもない。

 

2. サクラエディでタブを空白に変換

ブログにソースコードを貼るとき、タブを空白に変換する必要がある。

サクラエディタでは、

  • メニューより「変換 > TAB→空白

を選択する。

 

3. Notepad++ でタブを空白に変換。デフォルトでタブを空白に。

a. 既存のタブを空白へ変換する

Notepad++ で、既に作成してある文書内のタブを空白に変換したい場合は、変換したい部分を選択した後、

  • メニューより、TextFX > TextFX Edit > Leading space to tabs or to spaces

を選択する。

090927-002.png

 

b. 新規に作成する文書のための環境設定

新たに文章を作成したときに、タブを入力したら、空白を入力して欲しい場合、

  • メニューより、設定 > 環境設定 > エディット画面 > Tab Setting

Replace by space にチェックを付ける。

090927-001.png

追記 (2010.2.26) : 上記の「エディット画面」に Tab Setting がない場合、

  • 言語メニュー」のタブ設定

の「スペース置換」にチェックを入れる。

img07-02-2010[1]

 

4. Eclipse, Aptana でタブを空白に設定

Eclipse, Aptana の場合、

  1. メニューより Window > Preferences...
  2. Aptana > Editors > General > Tab Insertion

において、Use spaces を選択する。

091005-001

 

5. Emacs, Meadow, xyzzy でタブを空白に変換

  1. 変換したい範囲を選択する。
    • 変換したい範囲の先頭 で Ctrl + Space
    • 変換したい範囲の最後までカーソルを移動する
  2. M-x untabify

逆に空白をタブにしたい場合は、範囲を選択しておいて M-x tabify 。

 

参考