如果由我决定的话,我会从源代码中完全禁止使用 \t 字符,而只使用普通空格 - 但很多源代码,尤其是 C 语言,都是像这样缩进的:
- 无缩进
- 4 个空格
- \t
- \t + 4 个空格
- \t\t
TextMate 在这方面遇到了麻烦 - 它只有一个缩进设置(通常为 2 或 4,具体取决于语言,8 很少见),并且 \t 的含义(如果存在则普遍为 8)。
我是否缺少一些设置才能使其正常工作?
答案1
这是 emacs 默认插入缩进的反向方式(一级 4 个空格,二级 1 个制表符,三级 1 个制表符 + 4 个空格,等等)。您可以通过将缩进设置为 8 个空格来解决这个问题……但这样您就会始终插入 8 个空格(或者始终插入一个制表符,如果您以这种方式设置了 TM)。据我所知,没有办法在 TextMate 中处理愚蠢的 emacs 样式缩进。
答案2
一种方法是在编辑时用空格替换制表符:
# Replace tabs with 8 spaces in C sources
perl -lape 's/\t/ /g' -i *.c *.h;
# Now edit your files
# Replace 8 spaces with tabs
perl -lape 's/ /\t/g' -i *.c *.h
未经测试,但这是解决问题的一种方法。这也会弄乱不在行首的制表符/空格,但您可能没有这些。