我喜欢使用空格而不是制表符来缩进;在 sed
中替换行首的制表符很容易或 vim
:
s/^I/ /g
但是如果一行中有制表符(假设空格是制表符的宽度):
'foo'^I ^I => 'bar',
'bazzle'^I => 'qux',
每个选项卡并不对应于一定数量的空格以保持对齐。任何人都知道如何在保持正确对齐的同时用空格替换这些制表符?
最佳答案
在 Linux 和 BSD 下,查找 expand 和 unexpand 命令行工具。 expand 将制表符转换为空格,而 unexpand 执行相反的操作。最简单的用法是:
expand filename
如果你像我一样,使用 4 个空格作为制表符,那么:
expand -t 4 filename
默认情况下,将打印扩展到标准输出并保留原始文件。要进行就地替换,您至少有两个选择:
$ cp filename backup
$ expand -t 4 filename > tempfile
$ mv tempfile filename
或者,您可以在 vi 中调用 expand:
$ vi filename
:%!expand -t 4
关于regex - 如何用空格替换行内制表符,保持对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1527447/