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
(적절한 주소 지정이 앞에 붙음)을 사용하여 텍스트의 형식을 다시 지정할 수 있습니다.