2009-06-03 24 views
3

comment in response to a shell question,用戶tinkertim說,這是容易破解ksh使用bash自動完成庫。我希望沒有什麼比使用bash自動補全與AT & T ksh93。如何才能做到這一點?如何編程ksh93以使用bash自動完成?

ksh93有一個新版本一年幾次,所以我要尋找不涉及修改源代碼的解決方案。 ksh93可以動態鏈接新的C模塊,並且可以高度編程(我在每次擊鍵時都運行ksh函數),所以修改源代碼應該不是必須的。

注:我不是在談論自動完成,這是很容易在ksh做。我正在討論bash所有其他美味的自動補全功能,例如nmh命令的自動補全選項或自動完成的Mercurial命令。像這樣的東西。

回答

0

有Readline包裝,rlwrap。也許你已經有一個適用於你的系統的軟件包。

它坐落啓動程序的標準輸入上面,它的配置和位可編程,它不斷的歷史。

我通常用它像Oracle的SQL * Plus的東西。

它可能會或可能不會是你要搜索的工具,你必須檢查。

+0

rlwrap實際上看起來對其他問題非常有用,但其自動完成設施非常少。 – 2009-06-04 03:26:06

+0

無論如何,它會與KSH的輸入能力相沖突,如果有一些特別的。 – TheBonsai 2009-06-04 07:17:10

0

我認爲最簡單的方法之一(在客戶端的服務器上,我無法更改軟件包和其他東西)是將行編輯器設置爲emacs set -o emacs,然後雙擊ESC(ESC-退出)。

這是不是最有效的自動完成功能,但它的所有我這裏有沒有做我的.profile的一些時髦的黑客攻擊,並可能違反使用規則。

0

除了set -o emacs之外,還有set -o vi,它激活鍵盤組合ESC- \以完成文件名。 (ESC進入命令模式,\使自動完成儘可能多地完成文件名。)set -o vi當然也可以使用命令行進行vi風格的編輯,命令模式有兩種模式:命令模式和插入模式。

我承認這並不回答你在ksh中模擬bash式自動完成的原始問題,但至少你知道如果你之前沒有意識到在自動填充中使用ksh構建的另一種方式。

我還注意到這裏的另一個線程與一些相關的ksh自動完成信息,包括ESC- =獲取的選項列表:link text

+1

*文件名*自動完成在ksh中沒有問題。這是我想要的其他自動完成的東西,比如自動完成'cvs'命令等的功能。 – 2010-06-11 02:33:57

0

嘗試按ESC鍵,然後 '\' 鍵。它應該模仿bash的自動完成功能。