bash 或 zsh 中的左製表符補全

bash 或 zsh 中的左製表符補全

當我在 bash 或 zsh 中使用標準製表符完成時,我輸入檔案名稱或路徑的第一部分,然後點擊完成單字。這很有效,除非我位於一個充滿檔案的目錄中,其中檔案名稱的所有變體都位於單字的末尾,例如充滿時間戳檔案的目錄,這些檔案都以相同的前綴開頭:

foo-20120701124501.log
foo-20120701124531.log
foo-20120701124601.log
foo-20120701124631.log
foo-20120701124701.log
foo-20120701124731.log

在這種情況下,如果我輸入,foo<tab>我會得到foo-20120701124-- 我可以再次按 Tab 鍵,並查看所有檔案...我必須輸入接下來的 3 個字元才能獲得唯一的檔案名稱。

我想知道是否有一種方法可以輸入例如4731.log然後完成單字的開頭。我猜測這在 bash 中會很困難,因為 bash 補全使用 $COMP_CWORDand$COMP_KEY來實現其可編程補全,並且從我閱讀它的方式來看,我認為這些不會允許向左的單詞補全。我對 zsh 內部的完成了解不夠,不知道從哪裡開始在手冊頁中查找。

答案1

只有在按 Tab 之前有一個前導命令時,這才有效。可能不是您正在尋找的,但唯一的是我可以獲得想要的結果。下面的範例應該適用於您的情況。您只需位於 *4731.log 的末尾並按 Tab 1 次。如果它是唯一的,它將自動完成。

ls *4731.log

相關內容