Zsh: ¿Cómo cambio el ancho de tabulación de los comandos?

Zsh: ¿Cómo cambio el ancho de tabulación de los comandos?

¿Cómo cambio el ancho de una pestaña, para sangría, en comandos de una o varias líneas en ZSH? Esto no es lo mismo que las pestañas literales; cuando presionas la tecla tab, ZSH en realidad emite espacios al terminal:

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

Este comportamiento no se ve afectado por la configuración de mi emulador de terminal, setterm --regtabsni por la variable que suena prometedora IFSmencionada enman zshparam .

Obviamente, podría escribir mi propia versión y vincularla a una pestaña, pero este último recurso rápidamente se vuelve complicado cuando se mueve el cursor, las líneas se ajustan, hay más de una línea, sin mencionar >>a los amigos con vi-keys.

Respuesta1

ZLE expande los caracteres TAB en cadenas de mensajes y líneas de comando de entrada a espacios en pantalla. La expansión utiliza un cálculo fijo de tabulaciones cada 8 columnas y no implica emitir el carácter TAB real al terminal y, por lo tanto, la configuración real de tabulaciones de su terminal. Hace la misma suposición cuando usa TAB como atajo para el movimiento del cursor hacia la derecha, cuando la base de datos terminfo/termcap le dice que no tiene una secuencia de control de avance del cursor parametrizada. (ejemplo,ejemplo,ejemplo)

Tuviste suerte con las pestañas. En general, no utilice util-linux settermen ningún emulador de terminal que no sea el integrado de Linux, que controla los KVT de Linux. Verhttps://unix.stackexchange.com/a/491883/5132para un dispositivo portátil de trabajo que no codifica las secuencias de control del emulador de terminal integrado de Linux.

Respuesta2

stty -ale mostraría si la configuración del terminal para usar pestañas de hardware (quepoderprogramarse) o no (busquetab0en la salida).

zshpodría estar codificado;settermciertamente lo es (vereste). Funcionaría si su terminal está configurado para pestañas de hardware. Pero eltabsEl programa no está codificado (y probablemente esté instalado en su máquina).

ingrese la descripción de la imagen aquí

información relacionada