各行の先頭にある各タブ文字のみを空白に置き換えます。

各行の先頭にある各タブ文字のみを空白に置き換えます。

したがって、ファイル内のすべてのタブ文字をスペースに置き換えることは難しくありません。
たとえば、vimでは次のことができます。%s/\t/ /gc

各行の先頭にあるものを変更し、途中のものを変更したくない場合は、次のようにします。%s/^\t/ /gc

ただし、先頭に行があり、複数のタブがある行、途中にタブがある行がある場合は、ファイルのインデント構造を維持するために、行の先頭の各タブをスペースに置き換えたいと思います。何をすべきかわかりません。

vim、sed、または通常は正規表現を使用してください。

ベストアンサー1

評価レジスタを使用して、必要な数のタブ文字を適切な数のスペースに置き換えることができます。たとえば、

:s/^\t\+/\=repeat('    ',len(submatch(0)))

説明する:

:s/                                         " Replace
   ^                                        " At the start of a line
    \t\+                                    " One or more tabs
        /\=                                 " With the following evaluated as vimscript:
           repeat('    ',len(submatch(0)))  " 4 spaces times the length of the previously matched string

おすすめ記事