
¿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 --regtabs
ni por la variable que suena prometedora IFS
mencionada 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 setterm
en 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 -a
le mostraría si la configuración del terminal para usar pestañas de hardware (quepoderprogramarse) o no (busquetab0
en la salida).
zsh
podría estar codificado;setterm
ciertamente lo es (vereste). Funcionaría si su terminal está configurado para pestañas de hardware. Pero eltabs
El programa no está codificado (y probablemente esté instalado en su máquina).