我喜欢使用空格来进行缩进,而不是制表符;在sed
或vim
中替换行首的制表符非常容易:
s/^I/ /g
如果一行中有制表符(假设空格的宽度为制表符字符的宽度):
'foo'^I ^I => 'bar',
'bazzle'^I => 'qux',
每个制表符并不对应于一组固定数量的空格以保持对齐。有没有什么巧妙的方法可以在保持正确对齐的同时将这些制表符替换为空格?
在Linux和BSD上,查找expand和unexpand命令行工具。 expand将制表符转换为空格,而unexpand执行相反的操作。 最简单的用法是:
expand filename
expand -t 4 filename
默认情况下,expand命令会将内容打印到标准输出并保留原始文件。要进行原地替换,您至少有两个选择:
$ cp filename backup
$ expand -t 4 filename > tempfile
$ mv tempfile filename
或者,你可以在vi中使用expand命令:
$ vi filename
:%!expand -t 4
:retab
或者,如果你在空格后面有制表符:
:retab!
expand
很好地实现了这一点。 - fuenfundachtzig