我喜欢使用空格来缩进而不是标签; 在行的开头替换制表符很容易sed或vim:
s/^I/ /g
Run Code Online (Sandbox Code Playgroud)
但是如果一行中有选项卡(假设空格是选项卡字符的宽度):
'foo'^I ^I => 'bar',
'bazzle'^I => 'qux',
Run Code Online (Sandbox Code Playgroud)
每个选项卡都不对应于维持对齐的设定数量的空格.任何人都有一个狡猾的想法,如何在保持正确对齐的同时用空格替换这些制表符?
Hai*_* Vu 12
在Linux和BSD下,查找expand和unexpand命令行工具.expand会将制表符转换为空格,而unexpand会执行相反的操作.最简单的用法是:
expand filename
Run Code Online (Sandbox Code Playgroud)
如果你像我一样,使用4个空格作为标签,那么:
expand -t 4 filename
Run Code Online (Sandbox Code Playgroud)
默认情况下,将打印件展开到标准输出并保留原始文件.要进行就地替换,您至少有两种选择:
$ cp filename backup
$ expand -t 4 filename > tempfile
$ mv tempfile filename
Run Code Online (Sandbox Code Playgroud)
或者,您可以在vi中调用expand:
$ vi filename
:%!expand -t 4
Run Code Online (Sandbox Code Playgroud)
在Vim:
:retab
Run Code Online (Sandbox Code Playgroud)
或者,如果您在空格后面有标签:
:retab!
Run Code Online (Sandbox Code Playgroud)