
如何在 ZSH 中的單行和多行命令中更改製表符的寬度以進行縮排?這與文字製表符不同;當您按下 Tab 鍵時,ZSH 實際上會向終端發出空白:
zsh -f # Run without config
blackcap% echo $'\t.'
.
blackcap% .
blackcap% if
if> .
blackcap% tabs 4
blackcap% echo $'\t.'
.
blackcap% .
blackcap% if
if> .
此行為不受我的終端模擬器 中的設定的影響,也不受中提到的setterm --regtabs
聽起來有希望的變數的影響。IFS
man zshparam
顯然,我可以編寫自己的版本並將其綁定到選項卡,但是當遊標移動、換行、有不止一行時,這個最後的手段很快就會變得毛茸茸的——更不用說還有>>
使用vi鍵的朋友了。
答案1
ZLE 將提示字串中的製表符和輸入命令列擴展為顯示的空格。擴展使用每 8 列固定計算製表位,且不涉及向終端發出實際的 TAB 字元以及終端的實際製表位設定。當它使用 TAB 作為向右遊標移動的捷徑時,當 terminfo/termcap 資料庫告知它沒有參數化的遊標向前控制序列時,它會做出相同的假設。 (例子,例子,例子)
你很幸運有標籤。一般來說,setterm
除了驅動 Linux KVT 的內建 Linux 終端模擬器之外,不要在任何終端模擬器中使用 util-linux 。看https://unix.stackexchange.com/a/491883/5132用於不硬編碼 Linux 內建終端模擬器的控制序列的便攜式工作類似程式。