'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개의 공백을 사용 합니다 $PARINIT. par작동 방식을 수정하는 대신 다음을 사용하여 제거된 탭 들여쓰기를 다시 삽입할 수 있습니다.기준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(적절한 주소 지정이 앞에 붙음)을 사용하여 텍스트의 형식을 다시 지정할 수 있습니다.

관련 정보