格式化源程序或者其他文件是用 TAB 还是 SPACE 呢?

我认为用 SPACE 更好一些. 最大的好处就是在任何软件打开文件 的时候文件的效果都一样,而不会因为 TAB 的宽度不同的设置而不 同。

缺点就是SPACE 要按很多个键,而且是删除那么多的空格也很麻 烦。但是在 Emacs 中完全没有这个问题,和其他编辑器不一样, Emacs 中极少数的 mode 会把 TAB 键绑定在 self-insert-command 上, 也就是说按 TAB 键的时候,极少数情况下会真正插入一个 TAB 字符,大多数情况大下,对应的 mode 都会把 TAB 键绑定在一个与 当前文件相对应的 indent 函数上。不同 Mode 的Indent函数会插入 或者删除合适个数的SPACE. 还有很多命令都可以删除插入合适个数 的 SPACE ,例如:

可以用 查看按键和其对应函数之间的关系 察看他们 对应的快捷键。

我想了一下,我用Emacs 的时候,几乎从来不用一个一个的删除 空格。我经常看到有人在编辑源程序的时候,经常一边思考,一边非 常熟练的的按 DEL DEL DEL DEL DOWN DEL DEL DEL DEL DOWN , 来 删除 SPACE , 对齐源程序, 在 Emacs 中 可以用

M-x mark-whole-buffer or  C-x h
M-x indent-region or  C-M-\
还有
M-x mark-defun or C-M-h
M-x indent-region or C-M-\

那么如何选择 SPACE 而不是 TAB 呢?

(setq  indent-tabs-mode nil)
(set-default 'tab-width 4)
(setq tab-width 4)
(loop for x downfrom 40 to 1 do
      (setq tab-stop-list (cons (* x (default-value tab-width)) tab-stop-list)))

indent-tabs-mode 如果 设置为 t ,那么就会选择 TAB 作为格式化字符; 如果是 nil 那么就选择 SPACE 作为格式化字符。

每一个 TAB 字符占 4 个 SPACE 的位置。 制表栏 ( tab stop column) 是以 4 个空格单位均匀分布的。 也就是

(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80
84 88 92 96 100 104 108 112 116 120 124 128 132 136 140 144
148 152 156 160 8 16 24 32 40 48 56 64 72 80 88 96 104 112
120)