
Como altero a largura de uma guia, para recuo, em comandos de linha única e multilinha no ZSH? Isto não é o mesmo que guias literais; quando você pressiona a tecla tab, o ZSH emite espaços para o terminal:
zsh -f # Run without config
blackcap% echo $'\t.'
.
blackcap% .
blackcap% if
if> .
blackcap% tabs 4
blackcap% echo $'\t.'
.
blackcap% .
blackcap% if
if> .
Esse comportamento não é afetado pelas configurações do meu emulador de terminal, setterm --regtabs
nem pela variável promissora IFS
mencionada em man zshparam
.
Obviamente, eu poderia escrever minha própria versão e vinculá-la à guia, mas esse último recurso rapidamente fica complicado quando o cursor é movido, as linhas quebram, há mais de uma linha - sem mencionar >>
os amigos das teclas vi.
Responder1
ZLE expande caracteres TAB em strings de prompt e linhas de comando de entrada para espaços em exibição. A expansão usa um cálculo fixo de tabulações a cada 8 colunas e não envolve a emissão do caractere TAB real para o terminal e, portanto, das configurações reais de tabulação do seu terminal. Ele faz a mesma suposição quando usa TAB como um atalho para o movimento do cursor para a direita, quando é informado pelo banco de dados terminfo/termcap que não possui uma sequência de controle de avanço do cursor parametrizada. (exemplo,exemplo,exemplo)
Você teve sorte com guias. Em geral, não use o util-linux setterm
em nenhum emulador de terminal que não seja o Linux integrado, que aciona KVTs do Linux. Verhttps://unix.stackexchange.com/a/491883/5132para um dispositivo portátil que não codifica as sequências de controle do emulador de terminal integrado do Linux.
Responder2
stty -a
mostraria se a configuração do terminal para usar guias de hardware (quepodeestar programado) ou não (procuretab0
na saída).
zsh
pode ser codificado;setterm
certamente é (veresse). Isso funcionaria se o seu terminal estivesse configurado para guias de hardware. Mas otabs
o programa não está codificado (e provavelmente está instalado em sua máquina).