在bash,我想實現以下工作流程(提示以括號顯示,_
是光標):擊:SPACE觸發完成
- 類型 「富」(
$ foo_
) - 按空格鍵。在這一點上:
- 如果foo是一個函數,說
function foo() { printf "hello from foo" }
- 空間被印刷(
$ foo _
) - 函數被調用,並
hello from foo
是一個空間後打印 - 不換行($ foo hello from foo_
)
- 空間被印刷(
- 如果foo是不是一個函數,空間被印刷,這就是它(
$ foo _
)
- 如果foo是一個函數,說
我曾嘗試:
- 使空間發送
0x0a
(回)到終端仿真器(iTerm2在Mac)。此作品除了明顯打印換行符外 - 使用內置的完整功能:
complete -F foo -o nospace foo
。這工作,但我必須鍵入foo
然後SPACE
然後TAB
爲hello from foo
要打印的內聯 - 我聽說你可以以某種方式嵌入一個
\n
-eating腳本到PS1
。真的不知道該如何開始。
我也可以捕獲一個快捷方式,例如Ctrl+T
來執行富 - 但我真的只想按SPACE
。
理想情況下,只有輸入到終端的第一個單詞纔會有這樣的行爲。任何幫助將不勝感激,請保存我的理智。我有一個emacs-like的ido腳本,當我輸入cd
後跟SPACE
時,我想調用它。
您可以濫用'edit-and-execute-command'並重載'$ VISUAL'。然後按''或重新綁定''來運行它。不會推薦。 –
andlrc