Zsh - 명령의 탭 너비를 변경하는 방법

Zsh - 명령의 탭 너비를 변경하는 방법

ZSH의 단일 및 여러 줄 명령에서 들여쓰기의 탭 너비를 변경하는 방법은 무엇입니까? 이는 리터럴 탭 문자와 동일하지 않습니다. ZSH는 실제로 Tab 키를 누를 때 터미널에 공백을 표시합니다.

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 A 핵심 친구를 사용하는 것은 말할 것도 없습니다.

답변1

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

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

답변2

stty -a터미널 설정에서 하드웨어 탭을 사용하는지 여부가 표시됩니다(여기서할 수 있는프로그래밍됨) 또는 그렇지 않음(찾고 있음tab0출력에서).

zsh하드코딩될 수 있습니다.setterm물론 그렇습니다(참조이것). 터미널이 하드웨어 탭으로 설정되어 있으면 작동합니다. 하지만tabs이 프로그램은 하드코딩되어 있지 않으며 컴퓨터에 설치될 수도 있습니다.

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

관련 정보