Zsh - 명령의 탭 너비를 어떻게 변경합니까?

Zsh - 명령의 탭 너비를 어떻게 변경합니까?

ZSH의 한 줄 및 여러 줄 명령에서 들여쓰기를 위해 탭 너비를 어떻게 변경합니까? 이는 리터럴 탭과 동일하지 않습니다. 탭 키를 누르면 ZSH는 실제로 터미널에 공백을 내보냅니다.

zsh -f # Run without config
blackcap% echo $'\t.'
        .
blackcap%       .
blackcap% if
if>     .
blackcap% tabs 4
blackcap% echo $'\t.'
    .
blackcap%       .
blackcap% if
if>     .

이 동작은 터미널 에뮬레이터의 설정 이나 에서 언급된 setterm --regtabs유망한 변수의 영향을 받지 않습니다 .IFSman zshparam

분명히 내 버전을 작성하여 탭에 바인딩할 수 있지만 이 최후의 수단은 커서가 이동되고 줄이 바뀌고 줄이 두 개 이상 있을 때 빠르게 털이 많아집니다. 말할 것도 없이 >>vi 키를 사용하는 친구입니다.

답변1

ZLE는 프롬프트 문자열의 TAB 문자를 확장하고 명령줄을 디스플레이의 공백으로 입력합니다. 확장에서는 8개 열마다 고정된 탭 정지 계산을 사용하며 실제 TAB 문자를 터미널로 내보내는 것과 터미널의 실제 탭 정지 설정을 포함하지 않습니다. TAB을 커서 오른쪽 방향 이동의 단축키로 사용할 때와 terminfo/termcap 데이터베이스에서 매개변수화된 커서 앞으로 제어 시퀀스가 ​​없다는 메시지를 받을 때 동일한 가정을 합니다. (,,)

탭이 있어서 운이 좋았습니다. 일반적으로 settermLinux KVT를 구동하는 내장 Linux 에뮬레이터 이외의 터미널 에뮬레이터에서는 util-linux를 사용하지 마십시오 . 보다https://unix.stackexchange.com/a/491883/5132Linux 내장 터미널 에뮬레이터의 제어 시퀀스를 하드 코딩하지 않는 휴대용 작업용입니다.

답변2

stty -a터미널이 하드웨어 탭을 사용하도록 설정되었는지 표시됩니다(~할 수 있다프로그래밍되어 있는지) 또는 그렇지 않은지(찾으십시오.tab0출력에서).

zsh하드코딩될 수 있습니다.setterm확실히 그렇습니다 (참조이것). 터미널이 하드웨어 탭으로 설정된 경우 작동합니다. 하지만tabs프로그램은 하드코딩되지 않았습니다(아마도 컴퓨터에 설치되어 있을 것입니다).

여기에 이미지 설명을 입력하세요

관련 정보