'par'フォーマッタはタブのインデントを保持しません。

'par'フォーマッタはタブのインデントを保持しません。

Viでコードを書いています。テキストparフォーマッタ(と似ていますfmtが、IMHOが良い)形式のブロックコメントです。問題は、parインデントのためにテキストタブを維持できないことです。フォーマッタはこれを空白に置き換えます。

各行に初期タブがあるファイルと、そのparタブを空白に置き換える方法の例を示します。このcat -tコマンドは、テキストタブを次のように表示します^I

$ cat -t example.txt
^I# I'd like to reflow
^I# this paragraph while retaining
^I# the initial tabs.  I don't want to end up with
^I# spaces at the start of
^I# these lines.

タブが消えます:

$ par <example.txt | cat -t
        # I'd like to reflow this paragraph while retaining the initial
        # tabs.  I don't want to end up with spaces at the start of
        # these lines.

インデントの交換を中止するにはpar

parマニュアルのアドバイスに従って、環境変数をPARINITパスワード文字列に設定しましたが、rTbgqR B=.,?'_A_a_@ Q=_s>|必要な方法で動作するように変更できるかどうかはわかりません。

ベストアンサー1

フォーマッタはpar常にタブを空白に拡張し、他に指示することはできません。T文字が文字列内にある場合、ユーティリティは各タブストップで8つのスペースを使用します$PARINITpar動作方法を変更する代わりに、以下を使用して削除されたタブのインデントを再挿入できます。基準unexpand便利:

$ par <example.txt | unexpand | cat -t
^I# I'd like to reflow this paragraph while retaining the initial
^I# tabs.  I don't want to end up with spaces at the start of
^I# these lines.

これは、元のテキストが複数のタブにインデントされている場合にも機能します。

引数が指定されていない場合、このunexpandユーティリティは同じ視覚的なインデントレベルを達成するために、各行の先頭の空白文字を最大タブ文字数に置き換えます。また、インデントレベルで必要に応じてタブの後にスペースを追加します。

Viでは、!par|unexpand(適切なアドレス指定を前に付ける)を使用してテキストの書式を再指定できます。

おすすめ記事