Zsh - Wie ändere ich die Tabulatorbreite für Befehle

Zsh - Wie ändere ich die Tabulatorbreite für Befehle

Wie ändere ich die Breite eines Tabulators zur Einrückung in ein- und mehrzeiligen Befehlen in ZSH? Dies ist nicht dasselbe wie wörtliche Tabulatoren. Wenn Sie die Tabulatortaste drücken, gibt ZSH tatsächlich Leerzeichen an das Terminal aus:

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

Dieses Verhalten wird weder durch Einstellungen in meinem Terminalemulator setterm --regtabsnoch durch die in erwähnte vielversprechend klingende IFSVariable beeinflusst man zshparam.

Ich könnte natürlich meine eigene Version schreiben und sie an die Tabulatortaste binden, aber dieser letzte Ausweg wird schnell haarig, wenn der Cursor bewegt wird, Zeilen umbrochen werden, mehr als eine Zeile vorhanden ist – ganz zu schweigen von >>Freunden mit vi-Tasten.

Antwort1

ZLE erweitert TAB-Zeichen in Eingabeaufforderungszeichenfolgen und Eingabebefehlszeilen zu Leerzeichen auf dem Display. Die Erweiterung verwendet eine feste Berechnung von Tabstopps alle 8 Spalten und beinhaltet nicht die Ausgabe des tatsächlichen TAB-Zeichens an das Terminal und damit der tatsächlichen Tabstoppeinstellungen Ihres Terminals. Es macht die gleiche Annahme, wenn es TAB als Tastenkombination für die Cursorbewegung nach rechts verwendet, wenn es von der Terminfo/Termcap-Datenbank mitteilt, dass es keine parametrisierte Cursor-Vorwärts-Steuersequenz hat. (Beispiel,Beispiel,Beispiel)

Sie hatten Glück mit den Tabs. Verwenden Sie util-linux im Allgemeinen nicht settermin einem anderen Terminalemulator als dem integrierten Linux-Emulator, der Linux-KVTs steuert. Siehehttps://unix.stackexchange.com/a/491883/5132für ein portables Workalike, das die Steuersequenzen des in Linux integrierten Terminalemulators nicht fest codiert.

Antwort2

stty -azeigt Ihnen, ob das Terminal so eingerichtet ist, dass es Hardware-Registerkarten verwendet (wasdürfenprogrammiert werden) oder nicht (suchen Sie nachtab0in der Ausgabe).

zshkönnte fest codiert sein;settermist sicherlich (sieheDas). Es würde funktionieren, wenn Ihr Terminal für Hardware-Tabs eingerichtet ist. Aber dietabsDas Programm ist nicht fest codiert (und wahrscheinlich auf Ihrem Computer installiert).

Bildbeschreibung hier eingeben

verwandte Informationen