Regex 如何用空格替换行内制表符,保持对齐?
我喜欢使用空格来缩进,而不是制表符;在Regex 如何用空格替换行内制表符,保持对齐?,regex,vim,sed,Regex,Vim,Sed,我喜欢使用空格来缩进,而不是制表符;在sed或vim中,更换行首的制表符很容易: s/^I/ /g 但是如果一行中有制表符(假设空格是制表符字符的宽度): 每个选项卡不对应于用于保持对齐的设置数量的空格。任何人都知道如何在保持正确对齐的同时用空格替换这些制表符吗?在Linux和BSD下,请查阅expand和unexpand命令行工具。expand将选项卡转换为空格,unexpand执行相反的操作。最简单的用法是: expand filename 如果您和我一样,使用4个空格作为选项卡,
sed
或vim
中,更换行首的制表符很容易:
s/^I/ /g
但是如果一行中有制表符(假设空格是制表符字符的宽度):
每个选项卡不对应于用于保持对齐的设置数量的空格。任何人都知道如何在保持正确对齐的同时用空格替换这些制表符吗?在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
在Vim中:
:retab
或者,如果空格后有选项卡:
:retab!
别忘了设置expandtabI我想不用另一个编辑器就可以做到这一点,
expand
效果很好。
:retab!