web-dev-qa-db-ja.com

各行の先頭でのみ各タブをスペースに置き換えます

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

そして、各行の途中ではなく、最初の行を置き換えたい場合は、%s/^\t/ /gcを実行できます。

しかし、最初に1つの行とより多くのタブがある行があり、中央にタブがある行があり、ファイルのインデント構造を維持するために、行の最初の各タブをスペースに置き換えたい場合、つまりどうしたらいいかわからない。

Vimまたはsedで、または一般的に正規表現を使用します。

6
Ali

評価レジスタを使用して、任意の数のタブを適切な数のスペースに置き換えることができます。例えば:

: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
8
James