c++
탭을 사용하여 "\t"
출력을 사람이 읽을 수 있는 열로 구성하는 프로그램이 있습니다 . 그러나 Bash의 8칸 너비 열은 나에게 너무 좁습니다. 어떻게 늘릴 수 있나요?
노트:C++ 포럼에서 사람들은 다음과 같이 말합니다."C++는 문자만 출력하며 눈에 보이는 출력은 책임지지 않습니다.". Linux 포럼에서 사람들은 다음과 같이 말합니다."아마도 터미널에 출력하는 데 사용하는 프로그램이 책임이 있을 것입니다 less
."
답변1
C++에서 다양한 방법(예: ncurses)으로 액세스할 수 있는 터미널 데이터베이스를 사용하여 터미널에서 탭 정지를 변경할 수 있습니다. shell 을 사용하여 쉘에서 액세스할 수도 있습니다 tput
.
먼저 탭( )을 지워야 합니다 tput tbc
. 그런 다음 탭 정지를 추가하려는 각 열( tput hpa 10
예: 열 10)로 커서를 이동합니다. 마지막으로 탭 정지( tput hts
)를 설정합니다. 필요한 각 탭 정지에 대해 위치 지정 및 탭 정지 설정을 반복합니다. 예:
echo -e '0\t1\t2\t3\t4\t5\t6\t7\t8'
tput tbc
for ((i=0; i<`tput cols`; i+=10)); do
tput hpa $i
tput hts
done
tput hpa 0
echo -e '0\t1\t2\t3\t4\t5\t6\t7\t8'
답변2
따라서 인쇄된 탭 문자는 프로그램의 소스 코드에 고정됩니다. Bash의 탭 표시는 쉘 설정에서 편집할 수 없다고 생각합니다.
여기서는 추측일 뿐이지만 탭 문자의 표현은 터미널 프로그램이 사용하는 문자 인코딩 집합에 내장되어 있다고 생각합니다. ASCII 문자 세트는 탭 문자를 정의하지만 UTF-8 문자 세트는 탭 문자를 정의합니다.아닌 것 같다. 나는 어떤 문자 인코딩 세트도 탭에 대해 다른 너비를 사용하지 않는다고 생각합니다. 따라서 자신만의 문자 세트를 작성하여 사용하지 않는 한 운이 좋지 않다고 생각하지만 그것은 두통처럼 들립니다.
대신 명령을 시도해 보셨나요 pr
?
PR(1) 사용자 명령 PR(1)
namepr - 인쇄용 텍스트 파일 변환
탭을 10개의 공백으로 바꾸려면 다음을 수행할 수 있습니다.
./a.out | pr --expand-tabs=10 -t
답변3
C++는 너비에 대해 책임을 지지 않습니다. 길게 답글을 썼는데 테스트해 보니 정말 불필요해졌네요...
기본적으로 tabs
(ncurses5 패키지의 일부)를 사용하십시오... 예:
zsh> tabs 4 # 4 space width tabs
zsh> ./a.out
그러면 원하는 너비로 자동 형식이 지정됩니다. 배관이 필요하지 않습니다(대화형 작업이 있는 경우에는 도움이 되지 않습니다).
답변4
다른 답변에서 볼 수 있듯이tabs
유틸리티가 더 쉬운 방법입니다지정하다탭 정지는 자체 탭 정지를 설정하지 않는 응용 프로그램(예: 셸)을 위한 것입니다. POSIX는 다음을 지정합니다.tabs
유틸리티, (및tput
tput
), 그러나 해당 목적을 위한 terminfo 또는 동작에 대해서는 말할 것도 없습니다. (X/Open Curses는 별도의 표준이므로 할 말이 있습니다).
그러나 이러한 탭 정지를 사용하려면 터미널이 하드웨어 탭 정지를 사용하도록 설정되어 있는지도 확인해야 합니다. 당신이 그렇게한다면stty -a
tab0
, 출력에서 다음을 찾습니다.
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
매뉴얼 에 따르면 또는 를 stty
설정할 수 있어야 합니다 . POSIX는 및 을 정의 하지만 (하드웨어 탭) 및 (소프트웨어 탭)만 유용합니다.tab0
tab3
tab1
tab2
tab0
tab3
tab0 tab3
탭 확장 전략을 선택합니다.tab0
동안 탭 확장을 비활성화합니다.tab3
활성화하십시오.
추가 자료: